- 神经网络的发展
- 最开始的动机:是通过构建软件来模拟大脑,但今天的神经网络几乎与大脑的学习方式无关
- 我们依据大脑中的神经网络,来构建人工神经网络模型。左图中:一个神经元可以看作一个处理单元,它有很多的输入/树突,但只有一个输出/轴突,这个输出又变成另一个神经元的输入。右图中:这是一个简化的神经元的数学模型,在此,我们不是一次构建一个神经元,而是同时构建很多这样的神经元。
- 如今,数据量随着时间推移慢慢增加。传统的机器学习算法无法高效利用大数据,但大型的神经网络可以利用大数据来获得很高的性能效率,这是前几代学习算法做不到的,这也导致了深度学习算法起飞,间接导致了GPU的起飞。
- 预测T恤是否畅销的神经网络模型
- 左侧的四个数字列表叫做输入层(input layer),中间的三个神经元叫做隐藏层(hidden layer),右侧的一个神经元叫做输出层(output layer)
- 因为数据集只告诉了什么是正确的输入和什么是正确的输出,但并没有告诉什么是正确的中间层的值,所以这些正确值是隐藏的,所以叫这层为隐藏层
- 隐藏层输出了三个数字,它们作为下一层的输入,所以这三个数字叫做激活值(这三个神经元在这一层的激活),同理,输出层输出了一个数字,这个数字可能作为下一层的输入,所以这个数字也叫作这个神经元在这一层的激活
- 神经网络中的在某一层的每一个神经元,可以访问前一层的每个特征,通过设置特征前的参数就可以选择保留和忽略哪些特征。所以我们可以将数字列表写作向量的形式来进行运算,即每层输入一个向量,并输出另一个向量。
- 神经网络是一种特殊的逻辑回归模型,它不要求我们在隐藏层中手动指定特征,它可以学习并使用自己的特征,更容易做出准确的预测
- 有多层隐藏层的神经网络也叫多层感知器
- 设计神经网络模型时,虽然不需要手动指定隐藏层中的特征(神经元),但需要设定有多少层隐藏层和每层隐藏层有多少个特征(神经元),即设定神经网络架构
- 在计算机视觉中的应用(人脸识别和汽车识别模型)
- 图片在计算机中,是以一个像素矩阵存在的。如图,即是一个1000 * 1000的像素矩阵,我们可以把这个矩阵依次展开,得到向量X,而向量X可以作为模型的输入值,并输出图片中人的身份。
- 如图,是一个有三层隐藏层的人像识别神经网络模型,训练了很多类似上图的人像图片,并展示了隐藏层中的神经元试图检测的内容的可视化。
- 第一层隐藏层中的神经元可能在一个很小的局部图像里寻找非常短的线条,第二层隐藏层中的神经元可能学会了将这些非常短的线条组合在一起,并在一个较大的局部图像里寻找眼睛或鼻子,第三层隐藏层的神经元可能学会了将眼睛或鼻子等组合在一起,并在一个更大的局部图像里寻找较粗糙的脸型。
- 神经网络的一个非凡之处是,没有人告诉模型要在第一层隐藏层里寻找短边,第二层隐藏层里寻找眼睛或鼻子,第三层隐藏层里寻找粗糙的脸型。神经网络能够在数据中自行找出这些东西
- 如图,是一个有三层隐藏层的汽车识别神经网络模型,训练了很多类似图中汽车图片,并且学习算法与上一个人像识别的模型相同
- 第一层隐藏层中的神经元可能在一个很小的局部图像里寻找非常短的线条(与人像识别非常相似),第二层隐藏层中的神经元可能学会了将这些非常短的线条组合起来,并在一个较大的局部图像里寻找汽车的部分,第三层隐藏层中的神经元可能学会了将这些汽车的部分组合起来,并在一个更大的局部图像里寻找更完整的汽车形状
- 综上:只需向模型提供不同的数据,神经网络模型就会自动学习并使用隐藏层中的特征(神经元),以便对给定任务进行训练