Machine Learning - Andrew Ng on Coursera (Week 4)

Machine Learning - Andrew Ng on Coursera (Week 4)

接下将整理并发布学习Coursera上Andrew Ng的Machine Learning课程系列学习笔记,旨在与更多的机器学习爱好者一起分享学习心得,共同进步。本篇第四周的课程,主要内容是关于神经网络简单入门及应用。

动机

为什么要引入神经网络?在分类问题中,特别是在非凸边界函数的情况下,要将用样本训练分类器,假设公式$h_\theta$会写的比较复杂,两个变量的问题可能会涉及到三阶以及上的项,特征变量的数量如果随之增加,那么求解的难度会成倍地增加。

特别的,在机器视觉相关问题中,一块图像区域可能包含成千上万个像素点,如果都作为特征变量的话用线性回归或者逻辑回归会使问题变得尤为复杂。通常在图像分类问题中都采用的是神经网络算法,通过提取特定区域的像素值作为特征变量进行训练和识别,可以有效提高正确率和效率。

神经网络算法最早是人们为了发明一种算法来模拟人脑的学习过程,曾经在八十年代以及九十年代早期广泛应用,而在九十年代末期使用热情退却过一段时间,主要是受限于当年计算机的运算速度。而后又因为计算机运算速度突飞猛进而重新被大家重视并广泛应用。

有一些有趣的实验证实,虽然大脑可以完成许多看似不相关的任务,如听、触、看、闻等等,但实际上只用一种算法就可以搞这些任务。其中一个实验是将听觉神经切断,将相应的大脑皮层区域连接到视觉神经上,在这种情况下动物就可以用本该负责听觉的区域用于视觉的学习。另一个类似的实验是将触觉神经切断,让触觉的大脑皮层区域学会“看”。这个发现会有很多的应用,如帮助视觉残疾的人学会用舌头看东西,用声音定位,用磁场感应方向以及用移植的第三只眼学会看东西(现实版的“二郎神”)。

神经网络

前面提到神经网络是人类模仿神经工作方式的一种算法,本节就从神经细胞开始,切入到神经网络模型的表示。神经细胞有树突和轴突,树突作为参数输入的接收部分,将电信号经过“计算”,由轴突转递给下一个神经元,直到最后。

神经网络模型也是一样,可以接受多个参数的输入,由结点经过计算后输出结果。一般用逻辑回归作为激活函数,也就是从输入参数转换为计算结果的计算过程。另外,一般在每一层除了输入以外,还会加一个偏置单元。这个偏置单元的作用主要控制神经元产生正/负激励的难易,参考请戳此处

一般模型分为三层,分别是输入层、隐藏层和输出层。如果多于三层的话,除了第一层和最后一层,都是隐藏层。$a_i^{(j)}$表示第$i$层的激励函数,$\Theta^{(j)}$表示第$j$到$j+1$层的权重矩阵。以下图中三层神经网络模型为例,

三层神经网络模型

$$a_1^{(2)} = g(\Theta_1^{(1)}x)$$

$$a_2^{(2)} = g(\Theta_2^{(1)}x)$$

$$a_3^{(2)} = g(\Theta_3^{(1)}x)$$

$$h_\Theta(x) = a_1^{(3)} = g(\Theta^{(2)}a^{(2)})$$

其中,$g(z)$是Sigmod函数。整个传播过程就是由前向后,从输入一直到输出。

应用

本节简述了以神经网络模型实现XOR(异或门)和XNOR(同或门)的例子。从最简单的AND、OR、NOT讲起,深入浅出地将神经网络应用于实际的问题中去。调整的就是各输入变量和偏置单元的权重参数,利用真值表检验结果是否正确。而XOR和XNOR就是利用不同的基础的神经元上进行组合,以得到正确的结果。最后还展示了一个手写数字识别的小Demo,非常有意思。

在利用神经网络模型处理多分类的问题时,采用的是和逻辑回归类似的One-vs-all思想,需要调整的就是将原来只有一个输出结点变为多个,并使不同输出结点互斥。即输出层变为对应$n$类的$n \times 1$的列向量,不再用1,2,3,4表示各类。

文章目录
  1. 1. Machine Learning - Andrew Ng on Coursera (Week 4)
    1. 1.1. 动机
    2. 1.2. 神经网络
    3. 1.3. 应用
,