鲭兜的博客


努力に胜る天才无し


机器学习笔记(第四周)

1、Neural Networks 神经网络

1-1、Motivation 学习目的(引入)

1-1-1、Non-linear Hypotheses 非线性假设

虽然我们学习了线性回归和逻辑回归,但是还是有一些问题我们无法使用这两种学习算法解决。
比如,对于决策边界是非线性的分类问题,如果特征量过多的话,那么很显然我们无法使用多项式回归的方式来构造假设函数(那将带来大量的假设参数)。不妨设特征量一共是$n$个,那么二次项将会多达$n^2$个,三次项将会多达$n^3$个。并且我们很难取舍哪些是重要的项,或者哪些可以舍去。随着特征数的增加,后续的计算量也将以几何倍数增加。
因此,只是简单的增加二次项或者三次项的逻辑回归算法,并不是一个解决复杂非线性分类问题的好办法。

1-1-2、Neurons and the Brain 神经元与大脑

Origins: Algorithms that try to mimic the brain.
神经网络算法最初的目的是制造出能够模拟大脑的机器。
The “one learning algorithm” hypothesis
假设大脑处理所有事情并不需要上千个不同的方法,而只需要一个单一的学习算法。
神经重接实验表明,听觉皮层连接到眼睛的时候也学会了“看”,证明了大脑使用同一种学习算法可以同时处理光、听、触的信号。

1-2、Model Representation 模型表示

我们会将神经元模拟成一个Logistic Unit 逻辑单元。
在绘制神经网络时,通常只绘制输入节点$x_1,x_2,x_3$,但是有时会增加一个节点$x_0$,这个节点被称作偏置单位,或者偏置神经元,而且$x_0=1$。
这种神经元,也被称作一个把S型函数或者逻辑函数(Sigmoid (Logistic) activation function)作为激励函数的人工神经元。激励函数只是对类似非线性函数$g(z)$的另一种术语称呼。
模型的权重就是模型的参数$\theta$。
神经网络其实就是许多不同的神经元组成的集合。
神经网络中的第一层也被称为输入层,最后一层也被称为输出层,中间的层也被称为隐藏层

Notation 说明

$a_i^{(j)}$ = “activation” of unit $i$ in layer $j$ 表示第j层的第i个神经元或单元。
所谓激励是指由一个具体神经元读入、计算并输出的值。
${\theta}^{(j)}$ = matrix of weights controlling function mapping from layer $j$ to layer $j+1$ 表示一个波矩阵,控制着从一层到下一层的作用。
if network has $s_j$ units in layer $j$, $s_{j+1}$ units in layer ${j +1}$, then ${\theta}^{(j)}$ will be of dimension $s_{j+1}\times(1+s_j)$.

1-2-1、神经网络模型

这样神经网络的计算就可以表示成
$a_1^{(2)}=g({\theta}_{10}^{(1)}x_0+{\theta}_{11}^{(1)}x_1+{\theta}_{12}^{(1)}x_2+{\theta}_{13}^{(1)}x_3)$
$a_2^{(2)}=g({\theta}_{20}^{(1)}x_0+{\theta}_{21}^{(1)}x_1+{\theta}_{22}^{(1)}x_2+{\theta}_{23}^{(1)}x_3)$
$a_3^{(2)}=g({\theta}_{30}^{(1)}x_0+{\theta}_{31}^{(1)}x_1+{\theta}_{32}^{(1)}x_2+{\theta}_{33}^{(1)}x_3)$
$h_{\theta}(x)=g({\theta}_{10}^{(2)}a_0^{(2)}+{\theta}_{11}^{(2)}a_1^{(2)}+{\theta}_{12}^{(2)}a_2^{(2)}+{\theta}_{13}^{(2)}a_3^{(2)})$
那么为了高效计算,我们将式子向量化
$x=
\begin{bmatrix}
x_0 \\
x_1 \\
x_2 \\
x_3
\end{bmatrix}
$
$z^{(2)}=
\begin{bmatrix}
z_1^{(2)} \\
z_2^{(2)} \\
z_3^{(2)}
\end{bmatrix}
$
那么
$z^{(2)}={\theta}^{(1)}x$
$a^{(2)}=g(z^{(2)})$
我们不妨将$x$当作是第一层的激励,那么$a^{(1)}=x$。
所以式子又可以进一步变成
$z^{(2)}={\theta}^{(1)}a^{(1)}$
$a^{(2)}=g(z^{(2)})$
Add $a_0^{(2)}=1$
$z^{(3)}={\theta}^{(2)}a^{(2)}$
$h_{\theta}(x)=a^{(3)}=g(z^{(3)})$
这种计算$h_{\theta}(x)$的过程被称为forward propagation 前向传播,这样命名是因为我们从输入层的激励开始,进行前向传播给隐藏层计算隐藏层的激励,然后我们继续前向传播并计算输出层的激励。这个从输入层到隐藏层再到输出层,依次计算激励的过程叫做前向传播。

1-2-2、深入理解为什么神经网络可以解决非线性分类问题

从输出层的角度来看,这一逻辑单元的功能和逻辑回归单元相同。神经网络所做的就像逻辑回归,但是它不是使用$x_1,x_2,x_3$作为输入特征,而是使用$a_1,a_2,a_3$作为新的输入特征,而$a_1,a_2,a_3$它们是作为输入的函数来学习的。

1-2-3、其他网络结构

神经网络中神经元相连接的方式被称为神经网络的架构。
架构是指不同的神经元是如何相互连接的。

1-3、Applications 应用

在考虑拟合$x_1$XNOR$x_2$的模型之前,不妨先考虑拟合AND “且运算”的模型。
$x_1,x_2\in \{0,1\}$
$y=x_1$ AND $x_2$
那么假设函数可以为$h_{\theta}(x)=g(-30+20x_1+20x_2)$
通过真值表,我们很显然可以知道这个假设函数模型实现的是逻辑运算“且”;
当假设函数为$h_\theta(x)=g(-10+20x_1+20x_2)$时,实现的是逻辑运算“或”;
当假设函数为$h_\theta(x)=g(10-20x_1)$时,实现的是逻辑运算的“非”;
依此类推得到,当假设函数为$h_\theta(x)=g(10-20x_1-20x_2)$时,实现的逻辑运算为“(NOT $x_1$) AND (NOT $x_2$)”。

对于多步的逻辑值运算,我们可以建立神经网络来拟合模型。
将$x_1$ AND $x_2$、(NOT $x_1$) AND (NOT $x_2$)和$x_1$ OR $x_2$这三个模型放在一起,就可以模拟$x_1$ XNOR $x_2$模型。
给出公式$x_1$ XNOR $x_2=$($x_1$ AND $x_2$) OR [(NOT $x_1$) AND (NOT $x_2$)]

更一般的理解是,在输入层中,我们只有原始输入值。然后我们建立了一个隐藏层,用来计算稍微复杂一些的输入量的函数。然后通过添加另一个层,得到更加复杂的函数,直到到达输出层得到一个十分复杂的非线性分类器。

1-4、Multiclass Classification 多类别分类

One-vs-all
处理多类别分类的方法实际上是基于一对多算法延伸出来的。
建立一个具有多个输出单元的神经网络,也就是说现在神经网络的输出是一个多维向量。
即当输出向量是$\begin{bmatrix}
0 \\
0 \\
0 \\
1 \end{bmatrix}$表示这个图像是一个货车,当输出向量是$\begin{bmatrix}
0 \\
0 \\
1 \\
0 \end{bmatrix}$表示这个图像是一个摩托车,etc。