笔记内容来自万维钢精英日课专栏第三季《学习一个“深度学习”算法》,参考资料:
- 《计算机图形识别能力如何好到令人震惊》Timothy Lee
- 《深度学习:智能时代的核心驱动力量》Terrence J. Sejnowski
大脑的暗示
- 人脑并不是通过什么规则做的判断:是女人还男人,是狗还是猫
- 苍蝇的大脑是高度专业化的,进化使得苍蝇的大脑只具备这些特定的功能,而计算机是通用的
- 大脑的识别能力,不是靠临时弄一些规则临时变成,大脑的每一个功能都是专门的神经网络长出来的,那计算机为什么不模仿大脑呢?
- 谢诺夫斯基Sejnowski说,大脑给了计算机科学家四个暗示:
- 第一个是,大脑是一个强大的模式识别器——人脑非常善于在混乱场景中识别出你想要的东西,“茫茫人海中,一眼认出了他”
- 第二个暗示是,大脑的识别功能,可以通过训练提高
- 第三个暗示是,大脑不管是练习还是使用识别能力,都不是按照各种逻辑和规则进行的——我们识别人脸,并不是跟一些抽象的规则进行比对
- 第四个暗示是,大脑是由神经元组成的,我们大脑里由数百亿个神经元,大脑计算不是基于明确规则的计算,而是基于神经元的计算——这就是神经网络计算要做的事情
神经元网络
- 《柏拉图和技术呆子》一书中的“分层”思想,分层可以让我们用简单的东西解决复杂的问题——计算机最底层的单元是晶体管,而神经网络最底层的单元就是神经元
![5eed9bb0d0b6f4ffd387c7800ea9eec1.png](https://i-blog.csdnimg.cn/blog_migrate/89a6ae91bf805f3b38434db41a84da3d.jpeg)
![6c2373f71d74e8463e17e15d65a6f0fe.png](https://i-blog.csdnimg.cn/blog_migrate/3b9a2dd8c2ee933e869e7ef0d922e7de.jpeg)
![d5e7685c05601e0a94b900c42cade716.png](https://i-blog.csdnimg.cn/blog_migrate/d3ed6d39bd889dafae27827db2746603.png)
神经网络的数据训练
- 真实应用中的神经元会在计算过程中加入非线性函数的处理,并且确保输出值在0,1之间
- 本质上,神经元做的事情就是按自己的权重参数,把输入值相加,再加入偏移值,形成一个输出值,如果输出值大于某个阈值,就说该神经元被激发了——这个模型,在计算中很好用
- 神经元的内部参数,包括权重和偏移值,都是可调的——用数据训练神经网络的过程,就是调整、更新各个神经元的内部参数的过程,神经网络的结构在训练中不变,是其中神经元的参数决定了神经网络的功能
- 神经网络和喷气式发动机、阿司匹林一样,都是工程上的幸运发现,很有用,但是想用严格的数学说明它为什么这么有用,那很困难
- 肯定有规律,但你说不清都是什么规律,这种问题特别适合神经网络学习
- 训练、调整参数的方法,就是误差反向传播,该网络起源于1986年的一篇发表在《自然》杂志上的论文,这篇论文被引用次数已经超过了4万次,是深度学习的里程碑
- 具体的调整算法都是技术细节,这里的设计思想是,每次新的训练数据进来,就根据正确答案对参数进行一次微调,使得神经网络输出数值更接近正确答案——有点像体育训练中的刻意练习,反馈是即时的
- 为什么参数不是剧烈变动,而是收敛的?因为手写数字是有规律的,而股价变动几乎是没有规律的
- 虽然规律很重要,虽然神经网络已经能做出出色的判断,但是我们仍然不知道到底有哪些规律——你不能一一列举神经网络所有的规律,但是所有的规律已经包含在上万个参数之中,人脑的特点,就这样被简单粗暴地被神经网络复制了
- 深度学习的原理都是公开的,训练数据才是各家公司真正的稀缺资源,得慢慢积累
- 新一代的深度学习网络,哪怕是一张照片的角落里有一只猫都能识别出来,这就是“卷积网络”做的事
- 卷积网络除了一般的隐藏层,还会在中间加入几个逻辑层——也即“卷积层”
卷积网络
- 计算机不怕“笨办法”,但是你哪怕能让它稍微变聪明一点,你都会有巨大收获
- 人脑进行图像识别时,有两个思路:看什么(像素群的模式变化),往哪看(图中一块一块地找);卷积网络,就是这两个思路的产物
- 正是2012年卷积网络太成功了,“深度学习”才流行起来
- 卷积,是一种数学操作,可以理解成过滤,或者滤波,意思是从细致的信号中,识别尺度更大一点的结构
- 每一个卷积层识别一种特定规模的图形模式,然后后面一层只要在前面一层的基础上进行识别,这就解决了“看什么”和“往哪看”的问题
![0666405090b9a256ed3eb65431bfcab2.png](https://i-blog.csdnimg.cn/blog_migrate/7fae8e55f40b74ec1c52d72eaf3b93d9.jpeg)
案例:人脸识别
![a650690d7995d6cbf327fd952716f740.png](https://i-blog.csdnimg.cn/blog_migrate/6b294a6acc51f7e2f2d7565b4ab39930.jpeg)
![055fb1e863eec70ed74cbb9e7015cdaf.png](https://i-blog.csdnimg.cn/blog_migrate/0f55c3ee82c8a61171a245f931bc5456.jpeg)
- 第一层,先从像素点中识别一些小尺度的线条结构
- 第二层,根据第一层识别出来的小尺度结构识别像五官的局部器官
- 第三层,才是根据这些局部器官识别人脸
- 基本思想是,每一层的神经网络从前面一层获得输入,经过深度学习之后再输出到后面一层
- AlexNet原始论文中,足足分了五个卷积层,每一层都有很多个“特征探测器”组成,比如第一层中的某个探测器,专门负责判断图中哪里有某种特定的线条结构——这个探测器本身,也是一个神经网络,有自己的神经元,这个探测器,对所有区块都使用同一套参数进行计算得出结果
- 也即,卷积网络的第一层先把整个图像分解成多个区块,为了避免结构被区块拆散,相邻区块之间还有相当大的重叠
- 经过第一层的过来,像素点就转化为一张小结构的逻辑图;然后第二层再从这些小结构上看出更大、更复杂、更多的结构,以此类推,一直到第五层
![62efadaa1b7834e6c3847c972e534627.png](https://i-blog.csdnimg.cn/blog_migrate/6ab277b6963fff140bf9e57cfceff222.jpeg)
![fa62c75dd02a14fffa7f1fbea7c73c16.png](https://i-blog.csdnimg.cn/blog_migrate/262771e3786f392f03a7ecb13ecba77c.jpeg)
分层的好处
- 卷积层中,神经元只要处理一个小区域的数据,而且参数可以重复使用,大大减少了运算量
- 因为分区域进行搜索,就可以发现小尺度的物体
- 现在急于类似的卷积网络方法的深度学习程序,水平已经远远超过了AlexNet
深度学习不能做什么
- AlexNet论文作者成立创业公司,13年被谷歌收购,半年后,谷歌相册就有了搜索能力,紧接着谷歌就能从自家拍摄的街景图像中识别门牌号码了,谷歌还夺得了2014年ImageNet竞赛冠军
- 所以工程师一旦发现某个技术好,马上就能用到极致,2012年之后,深度学习成为机器学习的绝对主流
- 深度学习不能做什么?把一个物体放大,旋转角度,调整光线,卷积网络就不知道那是同一个东西,必须得重新判断
- 深度学习完全是基于经验的判断,没有任何逻辑推理能力——就像考前事先背好了数学答案,并不真的理解数学
- 光凭经验的操作有不错的强大程度,但它距离真正的智能还非常遥远