Coursera Machine Learning 神经网络模型


非线性假设函数

  既然前面已经有效果不错的线性回归和逻辑回归模型了,那么我们为什么还需要神经网络模型呢?试想,在面对一个复杂庞大的数据集时,若使用线性回归我们势必要增加大量的特征才能够较好的拟合数据。比如说现在有$n$个特征,要生成所有的平方项,则其数量大约在$\mathcal{O}(n^2/2)$左右,显然次数越高其数量增长速度越快。举个例子,现在我们有一个50*50像素的黑白照片数据集,训练目标是判断图片中是否包含有车辆。若我们选取每个像素来作为特征的话,那么特征数量$n$则为2500(如果是RGB彩色图片的话,则是7500),则其所有的平方项特征大约在三百万左右! 显然这是不切实际的,因此我们必须另辟蹊径。幸运的是,神经网络能为我们提供更为复杂的模型表示。

车辆检测

神经网络表示

神经网络是一种用来模拟人类大脑神经元工作的学习方法。

神经元

生物意义上的神经元由以下三部分组成:

  • 细胞体(处理信息)
  • 树突(输入端)
  • 轴突(输出端)

神经元

而在人工神经网络中,“神经元”则是一个简化的逻辑单元。其中的输入则是$x_1\cdots x_n$这些特征(其中$x_0$叫bias unit,恒为1),输出则是由假设函数计算得出,处理输入的信息则是采用各种激活函数(常用的有Sigmoid函数等),特别的还有称为权重的$\theta$参数,用来对输入给予不同的权重。

逻辑单元

神经网络

神经网络由若干层(layer)组成。第一层叫做“输入层”,最后一层叫做“输出层”,中间还有若干个“隐藏层”。

神经网络

神经网络

前向传播的向量化实现

前向传播

为了将前向传播用向量化方法实现,我们引入一个新的变量: $z_k^{(j)}$表示第$j$层第$i$个单元激活函数里的参数。

因此有$z^{(j)} = \Theta^{(j-1)}a^{(j-1)}$,$a^{(j)} = g(z^{(j)})$。若最后一层为第$k$层,则最终的结果为 $h_\Theta(x) = a^{k} = g(z^{(k)})$

非线性分类实例

逻辑与

逻辑与

逻辑或

逻辑或

异或非

这是一个由多个层组合起来的更复杂的函数表示。

异或非

多分类问题

输出层可以有多个输出单元,第$i$个单元为1表示输入的样本属于第$i$类。

多分类问题