查看: 3241|回复: 10

前百度工程师李嘉璇:php工程师如何转行人工智能

[复制链接]

5

主题

41

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2018-9-20 08:44:47 | 显示全部楼层 |阅读模式
本帖最后由 上条把妹之手 于 2018-9-20 09:17 编辑

前言
1.jpeg

  今天我主要分享的如上图就是这样几个方面,首先是从人工智能的应用开始介绍,尤其是机器学习和深度学习在我们产业界的应用,这是第一个方面。
  关于深度学习或者积极学习,如果要入门的话,总结了七个步骤。

  关于 TensorFlow 方面的,TensorFlow 的话是一个非常容易简单上手的深度学习框架,然后简单介绍一下它的变成模型,以及如果你想深入到 TensorFlow,了解一个自然语言,处理这些领域或者图象这个领域,去讲解一下一个例子,就是 TensorFlow 在自然语言处理中的应用。


  最后的话我会讲一下,关于深度学习的一些云的基础服务,对于国内深度学习研究方向,我总结大部分公司做的大概有三个方向。
第一个方向是关于云深度学习平台的建设,这个第二个方面是我目前正在做的,AI 芯片,包括有地平线,有寒武纪,有深建科技,这些公司,第三个方向是图象领域的一些应用,

机器学习与深度学习的应用
1.jpeg
  第一个方面是机器学习和深度学习的应用,我相信大家平时去看公众号,资讯,各种微博,都会知道,应该知道关于人工智能方面我们采用的方法是机器学习和深度学习。那么他们的应用主要在这三个领域。

  一个是图象,图象可以做图象的分类,图象分类我们经常说的图象识别,还有是目标检测。目标检测要达到的效果有两点。第一点是说我在一幅图象中把所有的物体给框出来,这是第一点。第二点是物体框出来,把物体的位置定位起来了,但是还要实现第二个功能,就是把这个物体的类别也识别出来。
我觉得在 AI 领域,如果你是做图象的,我认为你应该也要去对文本的处理方法,文本最新的研究要有一定敏锐度,因为你总做图象,其实你是缺乏灵感的,其实你经常需要从别的领域去吸收灵感,我认为是这样。

  还有就是语音,这一块就是目前,迅飞正在做的一些事情,语音识别,包括语音听写,语音转写,还有命令词识别。命令词识别大家就知道,比如 Google Now 这样的产品,你要唤起他会有一个命令词,就是你说一句话。出门那种导航产品,你会说,你在车里面喊问问,然后它就会待命的听你说话,这是命令词识别。
  语音合成,大家应该知道百度地图,给你导入林志玲或者郭德纲帮你导航,就是语音合成。
  声纹识别,跟人脸识别差不多,就是支付宝可以刷脸支付,声纹识别跟刷脸支付的含义是一样的,就是通过声纹鉴别出你这个人来,这是语音方面。
  文本是文本情感分析,主要用在百度糯米的一些产品,然后他会对商家有一些评论,然后你希望知道这些餐厅他的褒贬情况,然后文本情感分析,根据它的评论知道它是褒义还是贬义?就是它的分数应该归到哪一档?
  文本分类就是假设你在知乎上,你去提一个问题,你把这个问题标题和描述写出来以后,希望它能自动的给你归到什么类别?比如说职业发展类,还是情感问题类,还是技术问题类等等?然后还有一些挖掘等等。
  这是目前人工智能的应用,当然这些东西你都可以用于传统的学习方法来做,但是目前大家都流行的是,在做这些应用的时候采用深度学习方法,也就是采用深度神经网络的方法去做。

深度学习入门的七个步骤
1.jpeg
  我讲的第二点就是深度学习入门的七个步骤,这是我大概总结了一下。

  首先第一个步骤就是你去学习或者回忆一些数学知识,但是其实也不是说特别刻意的去学习,因为比如说我刚才说过,就是一个模型它是一堆的参数。

  第二个步骤就是你掌握一些机器学习理论和基本算法,其实我在做深度学习的时候,我绕过了机器学习,没有去看机器学习,所以做了很长时间以后,我才回过头来,我觉得我机器学习需要补很多东西,然后才开始把这些都给补上的。

  第四个步骤就是去读一些经典的论文,关注一些动态和研究成果。

  第五步的话就是自己动手训练神经网络,首先就要选择一个深度学习框架,这里面我自己一路一直是在做 TensorFlow 方向的开发,所以我也推荐使用 TensorFlow。

  第六步的话就是你深入你感兴趣的感性领域或者你目前工作相关的领域,比如说你计算机视觉,因为业界大家按这个分的,你是做视觉的还是做 NRP 的,结合这两个一起发挥价值的,业界一般都是按这个分的。

  第七步的话就是如何去优化呢?就是说我们工作中如果遇到了问题,然后去看新的论文中涉及到数学知识再去学那一方面的数学知识,涉及到经济学的算法再去了解那些方面,逐步去优化这个模型。

  这个就是刚才总结的七个步骤,从数学知识开始,数学知识了解以后会学一些算法,学习算法以后,编程工具这个大家可以同时去掌握,比如说 Python,其实认认真真坐在那两天左右就基本上也会的差不多,然后如果你会 C++ 的话更好了,基本上不愁找不着工作,各个大公司都会抢着要会 C++,并且懂深度学习开发的人员,然后还有就是研读公众号和博客,那个也比较重要。

TensorFlow 编程模型
  给大家稍微去讲解一下 TensorFlow 编程模型,TensorFlow 是一个什么东西呢?它是一个机器学习框架,之所以说它是机器学习框架,原因是说,它不光对深度神经网络做了实现,对整个机器学习界的所有算法,都有实现。它是一个机器学习或深度学习框架,并且它实现了异构设备的分布式计算,什么叫异构设备?指的是我们底层芯片可能用的是 CPU 或 GPU 以及 FPGA 这种不同的芯片。
  TensorFlow 本身是由 TensorFlow 核心 API,分为上下两个部分,其实我们工程师大概都用上面那一部分,上面部分叫做前端部分,前端部分就是用来搭建编程模型.TensorFlow 是基于静态图模型的,实际上就是图论,我们计算机中图论的模型,所以前端系统主要是用来提供编程模型,并且来负责构造计算图,那么后端系统的话主要是来运营构造我们的计算图,并且提供运行时的环境,负责执行构造的计算图。
  但是如果你不做底层优化方向,你只是做上层应用,比如说训练一个模型,把它应用到工业界的话,你可能会关心,比如直接使用 Keras 或者 TF Slim,这些东西直接它给你现成帮你实现了业界经典的网络,以及帮你现成训练好了模型,都放在 GitHub,你可以直接把他训练的模型下载下来,当作你训练下一个模型的预训练模型去做,这个就比较简单。

TensorFlow在自然语言处理模型的应用
  TensorFlow 在自然语言处理模型当中应用,首先这个就是非常简单的自然语言处理模型,RNN,叫做循环神经网络,其实这只是把循环神经网络做了一个展开,实际上单独的循环神经网络就是在 A 中做循环,一直循环下去,它是跟普通的神经网络没有什么太大的区别。
比如说 RNN 当中,目前来说它存在两个问题,第一个问题就是我说的,这个梯度爆炸和梯度消失的问题。
  什么叫梯度爆炸和梯度消失?我们知道反向传播的过程是从后面往前传播的,所以梯度消失你就可以理解为 0.9,0.9 的 100 次方,就是非常小的一个值了,然后梯度爆炸你就可以理解为 1.1 的 100 次方,就是一个非常大的值了,所以就会导致模型不收敛。
  第二个问题会存在的问题是 conflict 问题,也就是我的数据输入进来以后,没有一个东西帮忙挡着,因为 RNN 的话是一个数据序列的输入进来的,我可能需要控制我上一个序列对下一个序列的影响。
1.jpeg

  通过什么方式解决刚才那两个问题?第一个问题引入了 TEC 的架构,TEC 的架构实际上就是我们在这里面,给大家看一下,其实做了两个点,一个是在这里引入了 CEC 的架构,然后这个斜杠代表线性函数,并且它的权重为 1,然后并且还引入了两个门,这个门就是用来调节刚才说的完全放行或者完全屏蔽的问题,就是说我可以达到 30% 的放行 50% 的放行,而不是说完全 0 和 1 的这种行,这是 1997 年提出的一个架构。优化了一个版本,叫做标准的 LSTM,实际上引入了 forget gate,原因是说,比如说说两句话的时候,在第二句话,因为 RNN 是序列输入的,在第二句话,希望把第一句话完全忘记掉,因为 RNN 本来是一个有记忆的网络。
1.jpg


云深度学习平台的一些架构设计
  什么叫云深度训练平台?就是希望你的数据输入进来,我们希望提供一个深度学习的基础服务,给各个业务方提供深度学习基础服务。
  比如说你的业务部门有文本分类服务,只要每天告诉你,给你输入日志,然后我做个云深度学习平台的部门,我给他训练模型就行了,鉴黄部门,他把图片给我,我给他训练模型,鉴定暴恐的部门,他把图片给我,我给他训练模型就行了,这个云深度学习就是做这个的,大家可以去看一下。
  我接下来跟大家说的,就是在深度学习界非常头疼的问题就是调参的问题,大家老说是,可能是需要很多经验才可以的,所以目前深度学习平台存在很大异议就在于自动化的调参。而自动化调参是怎么实现的?就是说设置一个参数的最小值以及最大值,因为有多个超参数,然后把它们组合一下,生成大概 20 套或者 30 套不同的参数,然后每一套参数都给他生成一个分布式的深度学习训练环境,对同一批数据同时做训练,这时候选出一到两个模型效果最好的,把这一到两个对应的参数作为我这次训练的参数。

转行建议
  首先,要注重基础知识的掌握。数据结构、算法、网络编程、操作系统、数据库原理、计算机组成原理等等,熟悉这些知识能够非常快地让你理解在编程语言中出现的新特性,为什么要开发者要设计这个特性,这个特性背后的原理是什么。并且遇到的问题后,你会有非常清晰的解决思路。
  第二,要加强机器学习基础,并且紧密关注深度学习界的论文和应用。机器学习基础就是我们常常说的支持向量机、逻辑回归、决策树、朴素贝叶斯分类器、随机森林、聚类算法、协同过滤、关联性分析、人工神经网络和 BP 算法、PCA、过拟合与正则化等知识。同时,多关注学术界的深度学习论文,有助于知识储备的更新。这点很重要。如果固囿于原本的实现业务逻辑的应用,可以挖掘的东西也是有限,大规模流量和高并发高可用的架构也相对成熟,所以,作为工程师,必须保持自我的不断更新和迭代,多了解一门知识,对当前业务也有很大启发。
  第三,学习 TensorFlow。现在深度学习的火爆,很大程度上和 AlphaGo 有关。我相信业务逻辑的实现未来很可能都会由深度学习模型来实现自己写代码的功能。所以,作为工程师,从一个框架来入手,掌握深度学习的原理,甚至说有机会向深度学习工程师的方向转型,是非常重要的。


原文链接

https://studygolang.com/articles/10684
https://www.juhe.cn/news/index/id/1704




回复

使用道具 举报

44

主题

139

帖子

382

积分

论坛管理

Rank: 4

积分
382
发表于 2018-9-30 08:49:57 | 显示全部楼层
兄dei你这个链接打不开啊
回复

使用道具 举报

22

主题

107

帖子

266

积分

中级会员

Rank: 3Rank: 3

积分
266
发表于 2018-10-8 08:00:14 | 显示全部楼层
学习了!!!
回复

使用道具 举报

19

主题

68

帖子

225

积分

论坛管理

Rank: 4

积分
225
发表于 2018-10-8 08:09:02 | 显示全部楼层
这么多人想转,会不会坑。
回复

使用道具 举报

10

主题

82

帖子

200

积分

中级会员

Rank: 3Rank: 3

积分
200
发表于 2018-10-8 08:30:40 | 显示全部楼层
深度大佬进修 发表于 2018-10-8 08:09
这么多人想转,会不会坑。

不会的,安心奚落
回复

使用道具 举报

10

主题

72

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2018-10-8 16:11:05 | 显示全部楼层
很好的转行案例
回复

使用道具 举报

1

主题

22

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2018-10-9 09:34:28 | 显示全部楼层
我也是,在迷茫期,主要整体工作的烦,想转行。
回复

使用道具 举报

1

主题

20

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2018-10-10 08:24:16 | 显示全部楼层
有赞必回的帅哥 发表于 2018-10-9 09:34
我也是,在迷茫期,主要整体工作的烦,想转行。

一起加油噻
回复

使用道具 举报

5

主题

41

帖子

108

积分

注册会员

Rank: 2

积分
108
 楼主| 发表于 2018-10-10 08:31:09 | 显示全部楼层

迷那干巴爹(大家一起加油)
回复

使用道具 举报

44

主题

139

帖子

382

积分

论坛管理

Rank: 4

积分
382
发表于 2018-10-11 08:09:59 | 显示全部楼层
干巴爹
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表