改做人工智能之前,90%的人都没能给自己定位

原创 2017年10月31日 00:00:00

本文来自作者 章华燕 在 GitChat 上分享「转行 AI,如何给自己定位?」,阅读原文」查看交流实录

文末高能

编辑 | 奕迅

1. 为什么人工智能如此之火

众所周知,互联网行业的变化快到让所有从业者知悉并惶恐。就在笔者还在读研的时候,大家都在议论:Java 还是 C++ 更好就业的问题、移动互联网时代正在到来、安卓还是 iOS 开发,当然也有更前沿的大数据 Hadoop 与 Spark 等技术的横行。

然而就在2016年的一场人机大战举行,随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭之后,机器学习尤其是深度学习的热潮席卷了整个IT界。

所有的互联网公司,尤其是 Google、 微软、百度、阿里、腾讯等巨头,无不在布局人工智能技术和市场。前有百度深度学习研究院,腾讯的AILab,最近几天阿里的“达摩院”又占据了各大新闻头条。

确实,人工智能时代正在到来。人工智能已经被各个国家提升到国家战略的高度!

中国AI目前人才短缺,国内的供求比例仅为1:10,供需严重失衡。工信部教育考试中心副主任周明也曾在2016年向媒体透露,中国人工智能人才缺口超过500万人。


领英近日发布的全球AI领域技术人才分布地图

机会与挑战并存,现在很多开发人员正在考虑转岗人工智能领域。于是有很多的方法和途径供大家选择:1)自己看相关的AI书书籍;2)参加培训机构培训;3)买网络教学课程自学。

2. 掌握机器学习的三个层次

很多著名的机器学习(当然本文中机器学习也包括深度学习,深度学习只是机器学习的一个重要的分支)书籍包括机器学习培训机构的课程,大家都把数学列为机器学习课程的必备基础,几乎如出一辙地都在强调数学的重要性。于是乎许多想转头AI学习机器学习的小伙伴们就被高深莫测的数学难倒了,吓得退出了,事实真的是这样吗?不学高深的数学就无法在工业界应用机器学习算法去解决实际问题了吗?答案显然不是这样的。

毫无疑问,数学是机器学习的基础。以至于传统机器学习最重要的流派叫做 “统计学习理论” 。但是这和转行AI学机器学习必须要具备深厚的数学“看起来是合情合理”,但事实却并非如此!想要解释清楚这个问题,首先我们需要解释掌握机器学习的三个层次到底是什么?每个层次是怎么定义的?掌握每个层次需要的必备知识是什么?

2.1 机器学习第一层:懂原理的调库君

虽然这个级别被我定义为最低的等级。但是大家可不要忘记,在中国目前的互联网公司中处于我定义的这一级别的从事AI工作的算法工程至少占到 75% 以上。所以,这也是我建议的绝大多数数学不是特别好的,没读过博士或者硕士的同学转行AI给自己定位的建议。这样,你就不需要去学习那些你很难搞懂的高深莫测的数学知识,也不需要掌握各种数学原理的推导。你只需要知道理工科本科毕业的那三门数学基础知识就完全可以了。这时候,知道常见算法的基本原理,以及各个参数的含义。OK,能用机器学习算法解决实际项目中的任务才是王道嘛!

举个栗子吧!燕哥本人曾经在公司做过的实战性数据挖掘任务,数据在文件 “lppz.csv”中,第8列(为了与代码一致,从0计数)为预测数据。第10列开始的为特征向量列。于是如下的程序就能够完成预测任务,其实就这么简单。

from xgboost import XGBRegressorfrom sklearn.model_selection import train_test_splitfrom xgboost import plot_importancefrom matplotlib import pyplot as plt# 读取文件原始数据data = [] labels = [] labels2 = []with open("lppz.csv", encoding='UTF-8') as fileObject:    for line in fileObject:        line_split = line.split(',')        data.append(line_split[10:])        labels.append(line_split[8]) X = []for row in data:    row = [float(x) for x in row]    X.append(row) y = [float(x) for x in labels]# XGBoost训练过程X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.34, random_state=0) model = XGBRegressor(max_depth=5, learning_rate=0.1, n_estimators=145, silent=True, objective='reg:gamma') model.fit(X_train, y_train) ans = model.predict(X_test) plot_importance(model) plt.show()

2.2 机器学习第二层:会推公式的学术君

如果你想去BAT核心部门去做算法工程师,也许调库君是不够资格的。那么你需要满足一定的学术水平。也就是说,你不仅要懂得算法的大致原理,比如说决策树的分支是基于信息熵和信息增益的策略的。

你还得知道常见算法的优化过程中使用的损失函数以及他的推导过程,这时候对大家的要求就相对来说比较高了。接下来我就以BAT机器学习算法面试必考题(这是福利,燕哥亲自经历的经验,大家要认真点哦!)。

LR逻辑回归算法的损失函数的大致推导过程?

  • 逻辑回归函数形式

  • Sigmoid函数形状

  • 推导过程

    下面左图是一个线性的决策边界,右图是非线性的决策边界:

对于线性边界的情况,边界形式如下:

构造预测函数为:

函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

构造如下的损失函数:

下面详细说明推导的过程:

取似然函数为:

对数似然函数为:

最大似然估计就是求使 取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是,在 Andrew Ng 的课程中将 取为下式,即:

因为乘了一个负的系数-1/m,所以取 最小值时的θ为要求的最佳参数。

梯度下降法求的最小值θ更新过程:

于是,θ更新过程可以写成:

掌握上述的推导过程,基本上应对BAT算法面试没问题!

2.3 机器学习第三层:创造新算法的大神君

这一层次的典型人物就是 吴恩达、Hinton、Lecun 等大神级别的人物,这并非是仅仅是数学好或者是普通硕士生就能达到的水平,需要从博士生的艰苦数学基础的积累和长期不懈的研究探索才能达到的境界,一般如果转行的话,我个人建议别忘这个 level 上去想,容易伤害你自己!

但是,如果你是本科生,而且数学也非常不错的话,向往这方面发展还是很有希望的。

那么,这个层级的大神到底如何牛呢?还是举个栗子吧!

著名的神经网络发明人 Hinton ,在别人发现感知机的时候,他觉得感知机能力有限,于是想出了神经网络来表示更复杂的学习任务。只是提出这么个模型不行,还得解决我该怎么优化参数,想出(与上面的会推是两回事)一个损失函数并且找到很好的BP反向传播算法来优化神经网络参数,这就是他牛的地方。

并不是理解别人的思路,会推别人想出来的公式,而是从头到尾自己创造,并且算法实用性非常好,能解决很多现实的问题。


典型的神经网络结构

3. 转行AI,该如何定位自己?

对于转行的小伙伴们来说,我个人建议是最多选择自己的目标为第二个级别,也就是能够推常用机器学习公式的学术君。

但是,并不是所有人都适合这个级别的。这也是很多辅导机构包括业内人士误传的一句看似很有道理的“名言”:数学不好,千万别转AI。

事实绝对不是这样的,非常严谨的表述应该是:数学越好,你的AI转型之路越宽广,数学是决定你走AI路的天花板!

3.1 定位调库君

前面我也说了,其实现在互联网公司从事AI工作的 75% 以上的都是调库君,所以如果你数学确实不是很好,而且你又不是机器学习科班出身。AI之路并不是不可行,只是说,你不要对自己要求太高。

不要相信所谓的数学不行就不能转行AI,也不要觉得转行AI我就一定能成为机器学习专家,这两者都是很极端的例子,正视现实才是唯一的出路。转行AI,准确定位自己很重要。

3.2 定位学术君

如果你是计算机或者数学博士毕业,虽然当初不是科班出身,但是你数学很棒!我觉得这样的小伙伴可以给自己定位为我所说的第二级别学术君。

但是,你得专心有耐心的看专业书籍,并在有必要的时候研究原始算法论文搞清楚这个算法的来龙去脉。

这样你才能对算法的理解达到一个新的高度。长期积累下去,你肯定能成为机器学习专家级别的人物,但是一定不要着急,慢慢来!

4. AI转行者的入门与提升

  • 关于入门

    对于入门,可能是所有机器学习初学者的痛点,这是一个艰辛的过程,因为这并没有一个统一的答案。对于转行者来说,我个人的建议是选择一个比较正规的视频课程全套教程学习班去学习一下。别着急,我知道很多人会发现学了一遍之后还是蒙圈的,觉得太难崩溃了。

    不怕,燕哥是个过来人,当初我研究生阶段的时候上了我们学校一位很著名的机器学习大牛的课程。其实上完了几乎所有学生都是蒙圈状态,当然我也不例外。

    那个老师本身就是北大数学系(中国数学最牛的院校)博士毕业的,在机器学习领域已经有20多年的研究。上课的时候,他觉得所有人都跟他一样,对基本的数学理论了如指掌。

    于是乎,这位大侠上课的时候就沉醉在自己的公式推导之中,自己无比的崇拜和陶醉,然而学生一个个的蒙圈状态。

    但是,后来在我自己买书自学的时候,我发现,其实当初上课还是很有用的。

    当我看见书上的一些公式或者算法讲解的时候,我的脑海深处是有印象的,原来当初那位大神推导的东西是这个意思,会有一种豁然开朗的感觉。如果某一天你有这种感觉了,恭喜你,你入门了!

  • 关于提升

    如果你入门了,机器学习提升的过程是漫长的,无止境的过程。在这里我就不长篇大论了,你可以结合以下步骤作为参考:

机器学习的学习过程

俗话说,完事开头难。其实在机器学习的道路上提升也是一个不轻松的工作。毅力坚持是一方面,经验也是一方面。毅力是每个人自己的事,看你自己。关于经验,我觉得多写博客,多做实战,多关注比较著名的机器学习公众号。现在很多机器学习公众号的文章质量其实是相当不错的,尤其是近年来AI大火,大家的激情也是蛮高涨的。

近期热文

想入行 AI,别让那些技术培训坑了你...

低学历又如何?这样的程序员照样可以逆袭

像这样构建前端架构,除了 React 没有其他可说了

一次由点餐引发的 Vue2.0 实战

连公式都没看懂?!学渣谨碰这个「神经网络」

当我说要做大数据工程师时他们都笑我,直到三个月后……


版权声明:本文为GitChat作者的原创文章,未经 GitChat 允许不得转载。

转载-改做人工智能之前,90%的人都没能给自己定位

出处:/gitchat/article/details/78410081 本文来自作者 章华燕 在 GitChat 上分享「转行 AI,如何给自己定位?」,「...
  • LaputaFallen
  • LaputaFallen
  • 2017年11月14日 13:59
  • 160

MYSQL附近的人设计思路

在移动互联网广泛发展的今天,APP开发成为许多企业进入移动互联网的首选,笔者开发了众多的APP,发现很多app都有这样一个功能,那就是获取附近的人,怎么样来获取附近的人呢?其实很简单,就是要时刻记录用...
  • lynnlovemin
  • lynnlovemin
  • 2016年07月11日 14:22
  • 3358

人工智能是什么,能给我们带来什么?

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是计算机科学的一个...
  • qq_41024783
  • qq_41024783
  • 2017年11月11日 14:05
  • 43

人工智能各种技术与算法

1>单体人工智能 >随机数(Random) >搜索策略(Search Strategies)//详细请参见/racaljk/article/details/1...
  • u013524455
  • u013524455
  • 2014年01月25日 13:06
  • 12542

高通AI产品主管:AI重要的是给用户带来改变,而不是简单的两个字母

雷锋网按:“紧密关注但又谨慎”——或许是高通对于AI态度的最好概括。作为手机SoC平台和通信技术方面的技术龙头之一,高通对于智能手机乃至各种端智能设备有着极其大的影响力。在上星期举行高通2017骁龙技...
  • Dzz2seiN13YV
  • Dzz2seiN13YV
  • 2017年12月12日 16:12
  • 552

人工智能领域中声源定位的研究与发展------第二章 声源定位系统 (1)

人工智能领域中声源定位的研究与发展------第二章 声源定位系统
  • u013538664
  • u013538664
  • 2015年04月20日 23:02
  • 2099

人工智能之机器学习常见算法

摘要之前一直对机器学习很感兴趣,一直没时间去研究,今天刚好是周末,有时间去各大技术论坛看看,刚好看到一篇关于机器学习不错的文章,在这里就分享给大家了. 机器学习无疑是当前数据分析领域的一个热点内...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年05月22日 15:47
  • 43282

谷歌TensorFlow人工智能学习系统简介及基本使用入门

TensorFlow TensorFlow(腾三福)是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flo...
  • HymanYoung
  • HymanYoung
  • 2017年03月09日 16:11
  • 1573

JS实现页面进入、返回定位到具体位置

其实浏览器也自带了返回的功能,也就是说,自带了返回定位的功能。正常的跳转,返回确实可以定位,但是有些特殊场景就不适用了。例如,某些元素是在某种情况下才加上的,又或者多级定位。  目前,我知道的返...
  • hzbje7XSXP
  • hzbje7XSXP
  • 2017年03月02日 23:18
  • 112

游戏编程中的人工智能技术-扫雷机系列

是时候更新一波博客了!     在“神经网络入门”系列里,buckland大神制作了一款扫雷机程序,动画效果如下: 初代扫雷机:可以看到也多的扫雷机在打圈。 运行8代以后,好多了: 这几天作者...
  • angelguard
  • angelguard
  • 2016年07月26日 10:31
  • 635
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:改做人工智能之前,90%的人都没能给自己定位
举报原因:
原因补充:

(最多只允许输入30个字)