一、写在前面
现在科技的发展日新月异,而人工智能AI则是其中引人夺目璀璨无比的一个。从科技巨头谷歌的AlphaGo大败围棋高手李世石,到国内百度的无人驾驶汽车,从日常生活中随处可见的语音识别搜索,图片搜索到美国大选AI预测城市热人口和选举结果。每一次的科技突破和实践应用都带给我们全新的体验,甚至深深地改变了我们的生活,这就是科技的力量。
今天就跟大家聊聊深度学习,人工智能和机器学习。
二、概念
1)【什么是深度学习】
深度学习是机器学习中的神经网络算法的深化,是人工智能的核心。现在很火的人工智能,深度学习的实现,编程语言大部分是Python 和 Java的,所以学好这其中的至少一门语言还是很重要的。
百科给出的解释是深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
2)【深度学习与人工智能AI,机器学习的联系和区别】
简单来说,就是人工智能包含机器学习,而机器学习又包含深度学习。
可见机器学习,不是下面的这张图(一群机器再学习)😄:
深度学习却是酱紫滴:
1997 年击败国际象棋冠军卡斯帕罗夫的 IBM深蓝就是机器学习的产物,。谷歌的AlphaGo 则是深度学习,给他一堆棋谱,不告诉他规则,他自己去学习其中的规则,更有通用性。也就是说它既没有决策树方面的编程,也没有如何评估棋盘位置的方程式,或者是假定的规则。DeepMind CEO DemisHassabis 说:“AlphaGo 基本上是靠左右手互搏和观察职业棋局来下棋。”(训练期间 AlphaGo 跟自己下了 100 万盘棋)
3)【历史】
很明显的三个阶段:
1️⃣神经网络作为一个计算模型的理论,1943年 最初由科学家 Warren McCulloch 和 Walter Pitts 提出。
2️⃣康内尔大学教授 Frank Rosenblatt 1957年 提出的“感知器” (Perceptron),是第一个用算法来精确定义神经网络,第一个具有自组织自学习能力的数学模型,是日后许多新的神经网络模型的始祖。
3️⃣深度学习的概念由Hinton等人于2006年提出。基于深度置信网络(DBN)提出非监督贪心逐层训练算法,为解决深层结构相关的优化难题带来希望,随后提出多层自动编码器深层结构。
这三个阶段中,出现了几个很有名的深度学习的专家,其中的第四位就是华裔首席人工智能科学家,吴恩达 是 人工智能和机器学习领域国际上最权威的学者之一。下图中的Andrew Ng就是吴恩达。
4)【分类】
同机器学习方法一样,深度机器学习方法也有监督学习与无监督学习之分.不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
监督学习:这个进展是比较顺利的,已经有了工业上应用。比如开水烫,妈妈告诉你不要摸,碰了我就打你,就算是惩罚,你就学会了不要触碰,这就是监督学习。机器学习里的监督学习也有惩罚函数,评价函数。
非监督学习:非监督学习,是常识,比如一个孩子去听了很多场的音乐会,他可能不知道这是爵士乐或者是交响乐,但是当他听了很多场音乐后,他会总结出来这个音乐是高亢的,那个音乐是平和的。没人给他去打标签,这个就是非监督学习。
5)【基本思想】
深度学习通过构建深层神经网络,来模拟人类大脑的工作原理。如下图所示,深层神经网络由一个输入层,数个隐层,以及一个输出层构成。每层有若干个神经元,神经元之间有连接权重。每个神经元模拟人类的神经细胞,而结点之间的连接模拟神经细胞之间的连接。深度学习框架的基本结构如图所示。
6)【神经网络】
“人工神经网络(Artificial Neural Networks)”是另一种算法方法,它也是早期机器学习专家提出的,存在已经几十年了。神经网络(Neural Networks)的构想源自于我们对人类大脑的理解——神经元的彼此联系。二者也有不同之处,人类大脑的神经元按特定的物理距离连接的,人工神经网络有独立的层、连接,还有数据传播方向。
深度学习和神经网络还是有区别的,请看
7)【深度学习的应用和实例】
==【识别一只狗】:
怎么去识别一只狗和一条凳子,狗有毛,一千张图片输入,拍摄一张狗的照片通过了整个模型,但是如果一只猫过来了,就需要重新训练这个模型,而且机器学习有一个人工打标签的工作,工作量是巨大的。
深度学习,则是将这个打标签的工作去掉了,交给了神经网络自己来做了。具体过程如下:1)训练阶段会提供大量带标签的各种动物图像给神经网络,让后者学会进行分类;2)输入:提供一张不带标签的图片给经过训练的神经网络;3)第一层:神经元对不同的简单形状如边缘进行响应;4)更高层:神经元对更复杂的结构进行响应;5)顶层:神经元对我们会识别为不同动物的高度复杂、抽象的概念进行响应。
当然识别一个妹子和一只猫,更是so easy的事情。
==【语音识别】:
语音识别也是深度学习用武之地,现在在国内科大讯飞,百度地图的小度,包括众多搜索的语音搜索都是语音识别。
==【使用AI中的深度学习,自己作画】:
使用深度学习训练的机器人根据梵高的名画《星空》也将下图一个普通的建筑也绘成了梵高的星空风格的画了。
三、为什么要进行深度学习?
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
对程序员来说,这个是趋势,很有钱途的。虽然深度学习却是很难。
看看这些晦涩难懂的术语:Gradient descent(梯度下降算法)、Backpropagation(反向传播算法)、Convolutional Neural Network(卷积神经网络)、受限玻耳兹曼机(Restricted Boltzmann Machine)等。
如打开任何一篇技术文章,你看到的通篇都是各种数学公式。大家看到如下左边的图,其实并不是一篇高水准的学术论文,而仅仅是维基百科关于玻耳兹曼机的介绍。维基百科是科普层面的内容,内容复杂程度就超过了大多数数学知识的能力。
四、怎样进行深度学习?
1)【所需知识】
线性代数、概率和信息论等,Python ,Java其中一种编程语言,最好是Python,因为现在很多的深度学习框架都是基于Python,Java的相对少一些。
2)【了解深度学习的步骤】
深度学习的堆栈如下:
1️⃣GPU > Nvidia Tesla K80。该硬件常用于图形处理。它们深度学习的速度平均要比 CPU 快50-200倍。
2️⃣CUDA > GPU 的底层编程语言
3️⃣CuDNN > Nvidia 的库,用来优化 CUDA
4️⃣Tensorflow > 由 Google 开发,基于 CuDNN 的深度学习框架
5️⃣TFlearn > Tensorflow 的前端框架
3)【深度学习的框架】
深度学习的框架有很多,这里主要介绍最流行的TensorFlow框架。
01【简介】:
TensorFlow框架是2015年谷歌推出的开源的面向机器学习的开发框架,这也是Google第二代的深度学习的框架。很多公司都使用了TensorFlow开发了很多有意思的应用,效果很好。
用TensorFlow可以做什么?答案是它可以应用于回归模型、神经网络以深度学习这几个领域。在深度学习方面它集成了分布式表示、卷积神经网络(CNN)、递归神经网络(RNN) 以及长短期记忆人工神经网络(Long-Short Term Memory, LSTM)。
02 【概念】:
TensorFlow 就是有状态图的数据流图计算环境,每个节点就是在做数据操作,然后提供依赖性和指向性,提供完整数据流。
03 【安装】:
常规的Tensorsorflow的安装很简单,一条命令足矣:
$ pip3 install —upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc0-cp35-cp35m-linux_x86_64.whl
如果想评估一下或者简单学习一下,还可以通过Docker进行安装,安装的命令如下:
$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow
04 【优点】:
首先,目前为止,深度学习的开发框架里面TensorFlow的文档做的最好,对程序员学习而言是非常好的一点。
第二,TensorFlow有丰富的参考实例,作为参考学习起来非常容易。
第三,开发者社区活跃,在任何一个深度学习的社区里,都有大量关于TensorFlow的讨论。第四,谷歌的支持力度非常大,从2015年到现在升级速度非常快,这是其他开源框架远远达不到的结果。
05 【其他】:
实际上如果真要开始深度学习的开发研究工作,光是预备工作就够你喝一壶了,硬件要好,CPU,最好是GPU,或者是专业的DSP, FPGA处理芯片。比较的烧钱。详细的可以参考《从零开始:深度学习软件环境安装指南》。
五、写在最后
人工智能AI的大幕已经拉起,聪明的你,不跟着搞一下深度学习嘛!