01 AI工程师三级浪潮的到来,意味着无人占领的蓝海,意味着许多新成长的巨头,这意味着什么? 众多技术人员的需求,供不应求的开发市场,以及员工的高薪和众多机会。
我们最常做的事,就是目送上次波浪的余波远去,哀叹自己的坎坷,却没有意识到下一个波浪已经来到我们的脚下。
没错,我们说的是AI。
身处IT圈的人应该有直观的认识。 目前国内知名互联网企业都建立了自己的人工智能技术团队,运用AI技术,以期提高产品体验和智能化程度。
但与此同时,各种不清晰的名词也让很多非科班出身的开发者感到惊讶。 什么是卷积神经网络? 什么是凸优化? 又回去重新读高数、线费、概率吗? 有那么多公式,感觉完全不懂吗? 听说没有著名博士学位的人做不到这个吗?
正如我在以前知道的回答中所说的,作为开发者,AI领域界我可以分为这样的级别。
学术研究者们的工作是从理论上解释机器学习的各个方面,探索“这样设计模型/参数为什么更有效”,为其他员工提供更好的模型,让理论研究更上一层楼。 能做到这一点的人,才能是大山,也离不开机遇和努力,可谓凤毛麟角。
算法的改进者们可能无法回答“我的方法为什么是work”。 也许没有像Hinton、LeCun那样载入史册的巨大成就,但基于经验和奇特的想法,可以更有效地玩现有的模型,提出改进的模型。 这些人通常是各机器学习大公司的中坚力量和成长中的独角兽,使用什么样的模式对他们来说不是问题,根据所处的环境,通常会有几个选择。 在这个水平上,insight和idea才是重要的,各工具的不同,影响真的不是很大。 可能早得到一个结果,也可能晚得到,但不影响“有无成果”。
工业实现者这些人基本上不会在算法领域涉及太深。 也就是说,提前知道各算法的实现、各模型的结构。 他们试图根据论文再现优秀成果,或者使用别人再现的成果,将其工业应用。
对大多数IT人员来说,达到第三类——实现工业——已经足够好了。 至少,我们已经有机会亲自参与这个大时代。 光是这样,就打败了全国99%的人。
不仅是普通的程序猴子,文艺的程序猴子和……额、远大的程序猴子也这样说。
我说了。
答案只有一个。 just doit (做IT吧,少年)。
我认为要成为人工智能工程师,掌握机器学习、深度学习,需要努力,而且理论要结合项目进行实战。 因为作为程序员,跑一次程序比看10次书更好。 与其啃书本,不如亲手完成并运行程序。 我们在编写代码的同时,也要了解自己还有什么不足,有针对性地学习。
02机器学习入门首先,我们来谈谈机器学习应该学到什么。
不管学习什么东西,都不能在沙上建高台。 (熟悉这句话的人请举手。 )有基础知识,但还得掌握。 例如,在计算机视觉领域,根据我们团队内部训练的经验,为了能够独立进行机器学习的开发,希望先完成这些课程:
进入机器学习熟悉机器学习领域的经典算法、模型及实现的任务等,同时学习机器学习环境的建立和配置,学习用线性回归解决实际问题。
Logistic回归分析、神经网络、SVM把握数据集搜索; 理解分类任务算法(Logistic回归、神经网络、SVM )的原理在scikit-learn框架下学习使用各分类算法对具体任务进行分类。
决策树模型与集成学习算法的损失函数:信息增益、Gini系数
分类:穷举搜索、近似搜索
正则: L2/L1
预防过度拟合:预剪枝和后剪枝; Bagging原理Boosting原理
受欢迎的GBDT工具: XG boost和LightGBM
聚类、降维、矩阵分解主成分分析(PCA; 独立成分分析(ICA; 非负矩阵分解(NFM; 隐因子模型(LFM; k均值聚类和混合高斯模型GMM(em算法); 吸引子传播聚类算法(Affinity Propagation聚类算法)。
特征工程、模型融合推荐系统实现了学会常用的数据预处理方法和特征码方法; 学习特征工程的一般处理原则结合各种特征工程技术和机器学习算法实现推荐系统
上面的课会消耗你一个月以上的所有闲暇时间。 但是相信我,这是值得的。
如果真的连一两个月的时间都抽不出的话,可以吧。 我偷偷告诉你最基本的要求。 满足这个要求后,你可以说是机器学习入门。 可以进行矩阵的乘法运算
矩阵的乘法不能笑。 说实话,在这个高度封装的时代,梯度不需要自己计算,损耗也不需要自己求,逆向传导得到了更好的处理。 不需要什么,只需要知道这样的概念就可以开始手写的第一个程序:
这只是通过一系列矩阵运算(或其他类似的运算)将输入空间映射到输出空间。 参与运算的矩阵的值称为权重,需要通过反复迭代找到最佳值。
用数值表示当前权值离最佳值有多远,这个值称为损失,计算这个值的函数称为损失函数。
当前权重的值为
调大还是调小,这个值通过对损失函数求导来判断,这个求导得到的函数叫做梯度。通过损失和梯度来更新权重的方法叫做反向传导。
迭代的方法称为梯度下降。
虽然这么写出来的程序一定是不知其所以然,但是其实20年前我第一次用C++写Hello world的时候也是一脸懵逼的,我相信,每个能够投身机器学习开发工作的程序猿,都是有大毅力大勇气的,自然不会欠缺继续学习的动力和决心。
03 深度学习入门我们再来说说,深度学习应该学习哪些。
深度学习着重掌握卷积神经网络和循环神经网络,使用大量真实的数据集,结合实际场景和案例介绍深度学习技术的应用范围与效果。
神经网络入门及深度学习环境配置熟悉神经网络领域的常用术语、安装并配置深度学习框架Tensorflow,学会用Tensorflow解决一个实际问题。
神经网络基础及卷积神经网络原理使用不同结构的神经网络结构验证网络结构对效果的影响;了解卷积神经网络的相关概念和基础知识,并通过实战案例理解CNN局部相关性与权值共享等特性。
卷积神经网络实战图像分类及检测任务:学习图像分类任务及检测任务目前主要模型算法,并通过两个实战案例学习在Tensorflow框架下训练CNN模型。
卷积神经网络之图像分割实例掌握分割任务简介、反卷积(deconv/transpose-conv)、FCN
循环神经网络原理RNN基本原理
门限循环单元(GRU)
长短期记忆单元(LSTM)
词向量提取:Word2Vec
编码器—解码器结构
注意力机制模型:Attention Model
图片标注(Image Captioning)
图片问答(Visual Question Answering)
如何系统学习深度学习 ?90万程序员都在这么做!点我查看
04 进阶恭喜,你成为人工智能工程师群中的一员了。
接下来就可以收集一些自己的数据,并且训练一些自己的识别引擎;或者尝试着优化这个模型,感受一下所谓调参党的痛苦;又或者直接尝试实现ResNet、Inception这些更为先进的网络来刷刷Cifar;再不然可以尝试着向NLP或者强化学习方向去学习一下。总之,这些事情远没有看起来那么难。
当然,不论那条路,学习,进步和自我鞭策都是逃避不掉的必修课。一个独特的电灯胆的领域,勃勃的生机必然也意味着新成果的层出不穷。完成我上面提到的三门课程只能让一个人从无情的柠檬变成圈里人,有了进入这个领域,赶上这波浪潮的基本资格,至于到底是成为弄潮儿还是直接被大浪吞没,还是那句话,不劳苦必然无所得。努力学习不一定能修成正果,而不去努力学习,则注定是一无所获。
最后,祝福,祝福各位能在AI领域里大放异彩。