此文首要共享了一个非IT专业本科生的故事,关于他在AI范畴摸爬滚打的阅历。

这儿为了节约我们时刻,请我们在阅读前看一下目录,从目录中挑选需求的开端看起。

这篇文章针对的读者是完全不明白行的小白或许开端学习的同学,高手们你们说什么都是对的:p

我和AI之间的联系

为了给读者们供给些代入感,我想在文章的最初说说自己的故事,给读者一点学习AI的主意。

我是怎样和AI扯上联系的?

自己近年本科毕业。毕业于XX的XX大学,专业机电一体化,主修机器人专业。讲心里话,这个专业不是一个好专业。学的东西十分杂:机械工程、电子工程、软件工程、项目管理等,样样学,可是样样不精通,大三前根本没有IT相关的课程,不是CAD便是逻辑电路、工程力学等。触及的编程课只限于Matlab、C、Assembly (是的你没有听错,这是一个比C更根底的编程言语,只限于嵌入式)。可是咱们专业的导师都是机器人相关的范畴,运用的不是python/c++,便是人工智能、控制系统,并且都是课程所涵盖不到的高阶用法。。。

所以为了保证成绩良好、也为了保证有较好的作业方向,不得已在大一转大二的假日中开端触摸AI范畴,直到现在。

我在上大学时和AI有关的首要阅历包含但不限于:

  1. 在微软的Microsoft Accelerator Program中,以non-technical方向参加了机器学习关于不同红酒图片分类。

  2. 在校园假日的Research实习中,分析研讨了医院大数据中糖尿病III期药物对病人不同时刻的指标影响。

  3. 在实习阅历中,研讨了机器学习替代深度学习预测激光雷达point pillar的方针,并且规划了预标注模型。

  4. 在论文研讨中,探讨了少样本在流行模型中的方针检测(针对植物病害),并且参加了创业竞赛、一些农业方面的学术交流。

  5. 在校园最终一年的项目中,运用Yolov5规划人机围棋检测及算法应用。

  6. 在校园最终一年中运用Matlab完成computer vision项目(是的,为什么校园要用Matlab而不是其他言语,我也想知道)。

  7. 在实习中,参加了自动驾驶范畴的算法作业。

这些阅历尽管不算多,可是现已和AI有联系了吧。。。

AI和我的相杀

是的,不是相爱相杀,是相杀,没有爱。。。

先谈一点触摸AI前关于它的误解,相信有同学和我有类似的阅历(不感兴趣的能够直接越过)。

没上大学前,我是十分排斥AI的,有如下几个原因:

  1. 家庭要素:由于家里有一个学IT的亲属,分明对咱们家极差无比,还一天到晚夸耀她读IT的儿子怎样怎样好、怎样怎样对AI了解。父亲乃至为了巴结他们不让我学习AI,以为会抢他们饭碗。我打心底希望AI马上没落。
  2. 日子要素:每天都是刷题的日子,并且理科男还被分到了文科班,大多数时刻都被按着头皮被语文前史,没有时刻触摸AI,只是拿AI作为作文的素材,并且仍是硬背的,和AI没有任何的爱情。
  3. 内因:我关于机械感兴趣,其实我乃至关于编程也是十分厌烦的,以为总有一天人们会不得不过上没有电子产品的日子,所以觉得编程没含义。

很遗憾,天不随人愿,到现在为止还没有见到AI没落的趋势,乃至电动车正快速地替代者传统的汽车。。。。。。

回到正题。AI关于日子的影响越来越显着,在我日子中遇到了下列和AI有关的故事:

  1. ChatGPT:作为现在全球最火的大言语模型,现已开端替代许多作业和功能,现在能够做到依据文字成图、输入关键字进行常识收拾回答、自动生成代码等操作。

  2. 自动驾驶:配合着新能源快速地替代传统油车,像特斯拉、国内的蔚来、抱负、比亚迪等自动驾驶。

  3. 电商及短视频:像京东、阿里这些电商,运用深度学习对客户进行产品预测、强化学习及其他算法设置。


AI范畴包含什么?

AI范畴能够包含很多东西。假如用百度查找一下,就能够看到很多回答,就如下图所示:

怎么入门AI范畴? --- 一个非IT同学的阅历

可是在我的阅历中,AI大致分为几个大类:机器学习、深度学习、大数据、及强化学习。下面将经过本身阅历介绍触摸这些范畴的进程。


大数据

其实从专业的角度来说,大数据(Big Data)并不归于AI范畴。由于大数据归于数据科学(Data Science),AI的大部分方向(像深度学习、机器学习等)归于计算机科学(computer science)或许是计算机视觉(computer vision)一类的。可是从客观角度来说,研讨AI的人十分需求大数据,并且越来越多的范畴开端将大数据和AI联系起来

并且,从个人角度来说,这也是我真正触摸AI范畴的敲门砖。指导我进行大数据研讨的导师也带我走进机器学习。

回到正题,什么是大数据?

许多范畴都有所谓的“大数据”。比方通讯范畴,以为1M的数据便是“大数据”。可是这儿讲的大数据,更多的是指需求运用到云端的、或许需求树立数据库的大数据。

怎么运用大数据?

平常能够经过SQL、MongoDB等编程言语运用到它。关于用户端,更多地操作是提取数据做 数据分析 ,而不是输入数据

怎么学习大数据?

我首要讲一下现在触摸最多的SQL吧。SQL的话我之前运用过**PostgreSQLBigQuery**。这两个在运用SQL的语法上根本没有不同,差异更多地在于大数据的数据量上,BigQuery由于是运用web办法,运用的是Google的云端,能够支撑的数据量更大,可是或许存在需求付费的状况,假如没有相关机构支撑的话或许有点问题。

然后是关于SQL的语法。PostgreSQL很贴心地供给了一个SQL 的documentation,只需下了就能够从本地翻开,如下图所示。

怎么入门AI范畴? --- 一个非IT同学的阅历

怎么入门AI范畴? --- 一个非IT同学的阅历

从上面也能够看出SQL的套路,便是遵从下面的结构,只不过在运用时更复杂。

SELECT ${contents}
FROM ${SOURCE}
WHERE ${conditions}
ORDER BY ${another_condition};

其间${contents}十分或许是复数个,所以这儿就需求用其他言语如PHP等提取需求的内容title。

关于想找点实战比如的同学,这儿我供给一个牛客网上关于SQL的教程:

www.nowcoder.com/exam/oj/ta?…

怎么入门AI范畴? --- 一个非IT同学的阅历

上面有编程用的编辑版和问题,运用时也有答案校正。

而关于MongoDB这类的编程言语,运用的便是NOSQL(Not Only)办法。平常SQL所贮存的数据都是放在.data这类的文件里边,运用起来十分费事,都是NOSQL也能够运用.json等这类操作相对简略的文件格局,所以更受欢迎。

大数据提取后怎样办?

这儿供给一个SQL和Python对接的办法,运用的是BigQuery和Python的Panda。接口代码如下。

# Import google big query from panda
from pandas.io import gbq
# Import data
data_frame = gbq.read_gbq("SELECT CONTEXT FROM `SOURCE` ",project_id = "XXX")

其间,gbq.read_gbq里边引证SQL完整语句,project_id便是数据集名字,输入后能够生成panda办法的data frame,然后咱们就能够愉快地操作了:)。

除了编程类的大数据还有云端

除了上文说到的编程类的大数据(首要仍是像CSV这类的简略但量大的数据),还有像图片这种不简单运用编程言语存放的数据集,能够运用华为云roboflow等贮存并提取。


机器学习

机器学习和深度学习的本质便是fitting,只不过次元不同。这儿我首要讲的是Image Classification相关的。

在看后边的内容前我先总结一下机器学习比较显着的特色:

  1. 所用数据量/资源较小(这儿我理解为练习的数据量,而非测验的)。

  2. 着重线性、较为简略的问题。

  3. 可解说性强,具体体现在layer上。

机器学习更着重线性的问题,就像下面的示意图,针对的是这种边界较为明了、能够简略区别的特征。

怎么入门AI范畴? --- 一个非IT同学的阅历

常见区别算法的有如下几种:

  1. k-Nearest Neighbours (KNN)

  2. Decision Trees

  3. Support Vector Machines (SVMs)

简易图解区别算法

篇幅有限,我就经过几个图来解说吧。

KNN便是经过设置K指(现在练习的方针周围有K个以上?以下?)来分割边界。K是咱们定的。

怎么入门AI范畴? --- 一个非IT同学的阅历

Decision Trees便是用二叉树的办法输入layer来区别。

怎么入门AI范畴? --- 一个非IT同学的阅历

SVM便是一个wX-b=0的联系式,w是变量(layer)X的参数,b是常量。

怎么入门AI范畴? --- 一个非IT同学的阅历

也有X^n次方的:

怎么入门AI范畴? --- 一个非IT同学的阅历

实际项目中我感觉Decision Tree其实是效果最好的。

运用难点 — 怎么规划layer?

能够考虑下列思路:

  1. 切割图画做出layer:把图画切割成垂直/横向的上中下部分,提取每一部分的精华做layer。

  2. 运用统计的办法改造layer:histogram、standard deviation、percetile等办法。

  3. 运用深度学习的convloution办法计算周围一圈的平均值或许最大值是多少。

  4. 加filter:如noise, blur, rotation等操作,可是作用是数据增强。

运用难点 — 怎么测验?

最好的测验办法是Cross Validation,测验参数包含True Positive、True Negative、False Positive、False Negative、Percision、Accuracy等。

运用难点 — 有什么系统化的教程吗?

假如有同学还想对机器学习有更深入的了解可是苦于没有资源,能够测验一下下面的教程。

c.d2l.ai/stanford-cs…


深度学习

简直能够说,很少有人能够完整地用人类言语解说为什么深度学习能够从图片等数据输入中提取这么多特征,大部分时刻都是经过测验来看这些black box的性能。

深度学习是什么?便是经过卷积的办法来提取不固定的特征,也便是当前pixel和周围的联系,这层联系决议了方针方针潜在的特征潜力,这是和机器学习有所区别的,其他的无外乎便是运用十分多的数据来练习参数;以及可解说性十分差。

怎么入门AI范畴? --- 一个非IT同学的阅历

作为兵家必争之地的深度学习,现在在学习上存在着几个瓶颈:

  1. 学历瓶颈:国内大部分都在研讨生、或许IT专业最终一年研讨,并且都是针对最根底的CNN、RNN这类的原理来说,很少具备实战性。

  2. 阅历瓶颈:最前沿的常识都是靠项目或许进一步的学术研讨了解到的,关于菜鸟们其实蛮有困难的。

  3. 专家与菜鸟的隔阂:正所谓教会徒弟饿死师傅,在职场/学术范畴中,许多人把跑通深度学习的repo作为自己学会算法的规范,并且以此我行我素、欺压新人,这是一个十分欠好可是现实的状况;并且他们分明东西不多还喜爱藏着,也萌生出了许多的野路子,实属可笑。

  4. 菜鸟找人:会有什么都不明白的HR/技术顾问问一些深度学习背书的题目来凌辱人,遇到这种企业(尤其是QC行业中搞CS的和搞KY的),求职者能够直接关掉了,背出来的常识没有什么用途,只是用来凌辱你、降低你身价的。即使装傻装不会也要想办法回绝;剽他人方案的人见多了就知道了。

考虑到会有无数的文章讨论深度学习,并且会有一批人否定他人的东西(不管它对不对),这儿就不展开了,

包含关于tensoRT、 DLA 、DriveOS、

cuda ****C++ (会有不太懂的同行把这个和cuda编程弄混,cuda编程包含cuda c++ & python,像cuda python更多地是用 pytorch , tensorflow这种的,假如连这都搞混怕不是用 CPU 练习模型的吧。。。)

这儿我只供给点有用的材料,方便 深度学习 遍及大众

运用难点 — 怎么学习?

首先得有一个Nvidia带GPU的硬件,能够运用下面的办法在terminal检查。

nvidia-smi

留意:只有Nvidia的是能够的的,其他GPU的现在测过是不能用做深度学习的。

能够学习一下李沐的课程,在业内许多人在学习,能够对深度学习有一个较为通透的概念。

zh-v2.d2l.ai/chapter_pre…

运用难点 — 怎么上手?

这儿我推荐OpenMMLab。从市面上大部分的深度学习项目来看,OpenMMLab简直起到了垄断的位置,由于根本上90%的项目都需求openMMLab的装置包和checkpoints。别的10%包含YOLOv5、YOLOv8的作者ultralytics,可是后者去年也和OpenMMLab进行过YOLO算法会议。

能够依据下列材料学习:

  1. 微调相关 — InternLM

  2. 自定义模型评测 — OpenCompass

  3. 方针检测 — MMDetectionMMYOLO

  4. BEV算法(自动驾驶)— MMDetection3D

运用难点 — 怎么看模型?

能够运用netron来看。装置办法十分简略:

pip3 install netron

强化学习 — 局限性

强化学习我是在control system和Optimisation这类的课程中触摸的,所以主旨思想便是规划一个和机器学习/深度学习结合的、与外界环境所联系的控制系统。印象中像咱们机器人专业或许会比较多的触及到,可是其他范畴不多,或许说刚刚开端。

关于这个范畴的局限性包含如下几条:

  1. 论文多余开源:你能够看到许多关于强化学习的论文和教育视频,可是很难看到有关的开源项目。
  2. 现在Matlab上有相应的Simulink教程,可是除此之外很少看到有不错的教程。

AI菜鸟需求克服的困难 — 极快的常识迭代

AI是个常识更新迭代十分快的范畴。举个自己的比如吧。大四那年毕设论文选题材时,导师给我安利了少样本学习作为一个热门方向,可是在我毕业论文答辩前后(也便是短短1年不届时),少样本现已被许多机构研讨,乃至连喵喵Lab都出了专门服务于少样本研讨的MMFewShot,给我本不富余的研讨落井下石。。。接着,刚刚毕业还在阅历实习转正时,ChatGPT面世了,紧接着多模态、大言语模型等新名词等映入眼帘,之前的少样本学习现已不知道到哪里去了。。。。。

所以AI范畴有一个避免不了的问题:你跟得上新的常识吗?

并且关于刚入门、或许说还在AI范畴外张望的人来说或许需求短时刻内,从零开端学习这些常识。但明眼人都看得出来,这很难!!!这就会形成越来越多的人不愿意真正学习AI,而是粗糙地运用AI的成果。所以很简单就看到一些人高谈阔论地跟你讲AI,但详谈之后发现都是皮毛,有些人乃至连根底都没学完。。。。。。

所以,关于咱们这些菜鸟们,该怎样做?

编程根底,重中之重

尽管AI范畴不断地有弄潮儿出现,可是归根结底都有一个共同点:他们的创新首要体现在数学模型上,关于编程而言大多仍是停留在Python和 C++

所以从另一个角度来说,只需编程根柢够好,总有跟得上的一天。

并且从实际状况着手,学习模型时,大部分难点都在编译、运转上:不是这个包版本不对、便是脚本运转有问题,像什么路径不对,GPU设置不对,改算子时尺寸错了等等。。。都是一些最根底的问题。

再者说,就算哪一天不再从事这一行了,假如继续做和IT相关的也离不开编程。之前身边有很多做算法的搭档,脱离算法部分做其他作业时力不从心,很大原因在于平常编程根柢不稳,一换范畴那些之前掩盖的问题就都出来了。

所以,仍是根底最重要。

多看看外面的世界

除了前文讲到的一些学习材料,还有其他和AI有关的时机,包含但不限于:

  1. 参加AI相关的竞赛。

  2. 参加AI有关的会议、产品推行活动。

  3. 参加AI有关的课程、多学习开源的模型。

下面将供给一些资源给我们。

参加AI相关的竞赛

经过微信、或许一些大厂的官网能够看到很多竞赛。下面给几个最近有的活动(究竟适不适合请自行斟酌):

  1. Kaggle竞赛。

  2. Nvidia Hackathon相关的竞赛。

需求留意的是,由于个人时刻精力有限,最好挑选时刻较短、难度不要太大的。假如是集体竞赛就更好了,能够拓展人脉。

参加AI有关的会议、产品推行活动

关于AI的会议不外乎于两种形态:学术研讨,产品推行。

产品推行就看英伟达系列的就行。

学术研讨能够跟进一下最近OpenMMLab的大言语模型开放麦

参加AI有关的课程、多学习开源的模型

下面供给几个现成的资源。

  1. 英伟达系列课程,b站上能够看。
  2. OpenMMLab和交大的课程 — 这个仔细地讲了怎么运用OpenMMLab的repo以及改测验办法、改数据集、该backbone model等办法,我觉得是最有用的一类
  3. 之前在文章中说到的OpenMMLab相关的开源,十分值得一学,可是最好考虑一下自己的cuda。