吴恩达Coursera机器学习课程系列笔记讲解
课程笔记|吴恩达Coursera机器学习 Week1 笔记-机器学习基础
干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
干货|机器学习零基础?不要怕,吴恩达课程笔记第三周!逻辑回归与正则
Neural Networks: Representation
之前讲的Linear regression和Logistric regression都是线性分类器(linear classification),因为它们都只能用一条线来分类。
然而很多情况下,我们的分界线不见得是一条简单的曲线,可能就是一条弯来弯去的曲线,所以我们需要一个非线性分类器来划分这个数据集。
我们可以使用如下的式子去假设这个非线性模型:但是如果特征很多很多,比如说一幅图像,我们用每一个像素去表示一个特征的话,这个计算量将是无比巨大的,所以更普及的一个方法是使用神经网络(Neural Networks)。
神经网络,顾名思义,就是模仿了人类大脑的构造了,一层一层的进行计算,最后得出一个结果。
每一层对上一层的数据进行一个抽象得出一系列的决策,然后下一层在对这一层得出的决策再进行一个抽象的到更高层次的决策,就这样一层一层下去,直到最后一层的出一个终极决策,输出结果。
我们的大脑中使用“神经元(neuron)”去感知,去连接其他的神经。
类比一下,在神经网络中也是如此,我们在每一层中,弄几个神经元来感知(=计算),然后讲决策传个下一层的神经元……以此类推直至最后一个输出层的神经元。
首先看一下一个神经元是怎么工作的:
然后再来看由多个这样的神经元组成的简单的三层神经网络是怎么样工作的:
下面,我们把这一系列的计算公式展开来,然后再合并成colume vector相乘的格式,最后再合并成matrix相乘的形式。sigmoid函数用σ(z)来表示。
以上便是一个三层的神经网络的工作流程,再复杂的也是这样一层一层计算的。
这里最容易弄混淆的就是转换成矩阵的这一步了。有一个比较好的检验矩阵表示是否正确的方法,就是去check一下矩阵相乘之后的维度,如果相乘的时候维度对不上,尝试转置一下。
另外在这门课程中,我们的向量都是column vector,即竖的向量;矩阵都是row represented matrix,即以一行为数据。
上一周的课程中已经讲过如何使用“one-to-rest/all”的方法来进行多分类问题了,就是k个二分类器把属于这一类的分别挑出来。
这样的话,需要分别训练k个二分类器。接下来,我们使用神经网络进行多分类,只要训练一个分类器即可。说是一个分类器,其实是k个分类器的集合器,我们把k个分类器分别放在了隐藏层的k个神经元中。
然后这k个神经元自然会输出k个结果,将这些结果使用softmax函数转换成概率,然后取概率最大的那一个类别即可。
细节图如下:
其中的softmax函数是为了让这几个分类器的结果具有可比性而引入了一个函数,它将把这些结果转换成“同一分布”的概率,即这k个概率总和为1。下面式子中的z是一个K维向量:
比如接下来我们需要通过神经网络去识别一幅图像。
我们将图像中的每一个像素作为一个特征,输入到如上的多分类神经网络中去,并且告诉神经网络,这幅图是什么,然后让它自己去比较预测结果和正确结果,使用back propagation的方法去纠正错误,学习像素与类别之间关系。如此一来,输入一幅全新的图像后,这个神经网络就可以知道类别什么了。
和上面的细节图一样,W用来表示隐藏层的3个神经元即3个二分类器(cat分类器、dog分类器、ship分类器),最后3个分类器输出三个类的概率(cat score、dog score、ship score),结果dog的概率最大,但是正确的类别是cat,所以需要神经网络去比较预测结果和正确结果,然后使用back propagation的方法去纠正错误,下一次将会讲到,如何比较结果,如何纠正错误。