第一个方面是机器学习和深度学习的应用,我相信大家平时去看公众号,资讯,各种微博,都会知道,应该知道关于人工智能方面我们采用的方法是机器学习和深度学习。那么他们的应用主要在这三个领域。
一个是图象,图象可以做图象的分类,图象分类我们经常说的图象识别,还有是目标检测。目标检测要达到的效果有两点。第一点是说我在一幅图象中把所有的物体给框出来,这是第一点。第二点是物体框出来,把物体的位置定位起来了,但是还要实现第二个功能,就是把这个物体的类别也识别出来。
我觉得在 AI 领域,如果你是做图象的,我认为你应该也要去对文本的处理方法,文本最新的研究要有一定敏锐度,因为你总做图象,其实你是缺乏灵感的,其实你经常需要从别的领域去吸收灵感,我认为是这样。
还有就是语音,这一块就是目前,迅飞正在做的一些事情,语音识别,包括语音听写,语音转写,还有命令词识别。命令词识别大家就知道,比如 Google Now 这样的产品,你要唤起他会有一个命令词,就是你说一句话。出门那种导航产品,你会说,你在车里面喊问问,然后它就会待命的听你说话,这是命令词识别。
语音合成,大家应该知道百度地图,给你导入林志玲或者郭德纲帮你导航,就是语音合成。
声纹识别,跟人脸识别差不多,就是支付宝可以刷脸支付,声纹识别跟刷脸支付的含义是一样的,就是通过声纹鉴别出你这个人来,这是语音方面。
文本是文本情感分析,主要用在百度糯米的一些产品,然后他会对商家有一些评论,然后你希望知道这些餐厅他的褒贬情况,然后文本情感分析,根据它的评论知道它是褒义还是贬义?就是它的分数应该归到哪一档?
文本分类就是假设你在知乎上,你去提一个问题,你把这个问题标题和描述写出来以后,希望它能自动的给你归到什么类别?比如说职业发展类,还是情感问题类,还是技术问题类等等?然后还有一些挖掘等等。
这是目前人工智能的应用,当然这些东西你都可以用于传统的学习方法来做,但是目前大家都流行的是,在做这些应用的时候采用深度学习方法,也就是采用深度神经网络的方法去做。
深度学习入门的七个步骤
我讲的第二点就是深度学习入门的七个步骤,这是我大概总结了一下。
首先第一个步骤就是你去学习或者回忆一些数学知识,但是其实也不是说特别刻意的去学习,因为比如说我刚才说过,就是一个模型它是一堆的参数。
第二个步骤就是你掌握一些机器学习理论和基本算法,其实我在做深度学习的时候,我绕过了机器学习,没有去看机器学习,所以做了很长时间以后,我才回过头来,我觉得我机器学习需要补很多东西,然后才开始把这些都给补上的。
第四个步骤就是去读一些经典的论文,关注一些动态和研究成果。
第五步的话就是自己动手训练神经网络,首先就要选择一个深度学习框架,这里面我自己一路一直是在做 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 的话是一个数据序列的输入进来的,我可能需要控制我上一个序列对下一个序列的影响。
通过什么方式解决刚才那两个问题?第一个问题引入了 TEC 的架构,TEC 的架构实际上就是我们在这里面,给大家看一下,其实做了两个点,一个是在这里引入了 CEC 的架构,然后这个斜杠代表线性函数,并且它的权重为 1,然后并且还引入了两个门,这个门就是用来调节刚才说的完全放行或者完全屏蔽的问题,就是说我可以达到 30% 的放行 50% 的放行,而不是说完全 0 和 1 的这种行,这是 1997 年提出的一个架构。优化了一个版本,叫做标准的 LSTM,实际上引入了 forget gate,原因是说,比如说说两句话的时候,在第二句话,因为 RNN 是序列输入的,在第二句话,希望把第一句话完全忘记掉,因为 RNN 本来是一个有记忆的网络。
云深度学习平台的一些架构设计
什么叫云深度训练平台?就是希望你的数据输入进来,我们希望提供一个深度学习的基础服务,给各个业务方提供深度学习基础服务。
比如说你的业务部门有文本分类服务,只要每天告诉你,给你输入日志,然后我做个云深度学习平台的部门,我给他训练模型就行了,鉴黄部门,他把图片给我,我给他训练模型,鉴定暴恐的部门,他把图片给我,我给他训练模型就行了,这个云深度学习就是做这个的,大家可以去看一下。
我接下来跟大家说的,就是在深度学习界非常头疼的问题就是调参的问题,大家老说是,可能是需要很多经验才可以的,所以目前深度学习平台存在很大异议就在于自动化的调参。而自动化调参是怎么实现的?就是说设置一个参数的最小值以及最大值,因为有多个超参数,然后把它们组合一下,生成大概 20 套或者 30 套不同的参数,然后每一套参数都给他生成一个分布式的深度学习训练环境,对同一批数据同时做训练,这时候选出一到两个模型效果最好的,把这一到两个对应的参数作为我这次训练的参数。
转行建议