吴恩达机器学习笔记(七)神经网络
本文章是笔者根据Coursera上吴恩达教授的机器学习课程来整理的笔记。如果是初学者,建议大家首先观看吴恩达教授的课程视频,然后再来看博文的要点总结。两者一起食用,效果更佳。
一、非线性假设(Non-linear Hypotheses)
我们已经学习了线性回归模型和Logistic回归模型,那么为什么还需要学习神经网络?
原因是现实世界中存在很多非线性的复杂的分类问题。当特征少时,可以用Logistic回归多项式拟合。当特征非常非常多时,例如有100个特征,假设我们只取二次项的特征,仅仅包含
x
1
x_1
x1的二次项就有100个(
x
1
2
,
x
1
x
2
,
x
1
x
3
,
x
1
x
4
,
.
.
.
.
.
.
,
x
1
x
100
{x_1}^2,x_1x_2,x_1x_3,x_1x_4,......,x_1x_{100}
x12,x1x2,x1x3,x1x4,......,x1x100)这个特征空间太大了,给计算带来了困难。
再举一个计算机视觉中的例子。识别一个图片中的物体是否是车。如果有50x50个像素点,那么特征数量n=2500。如果是RGB表示的颜色,那么特征数量是2500x3=7500。如果只考虑二次项的特征,
x
i
∗
x
j
x_i*x_j
xi∗xj,那么一共
C
2500
2
=
3125000
C_{2500}^2=3125000
C25002=3125000个特征。这个数字大得有点离谱了。
而后面即将讲到的神经网络能够处理复杂的非线性问题,即使特征数量n非常大。
二、神经元和大脑(Neurons and Brain)
三、模型表示(Model Representation)
单个神经元的结构:
输入经过神经元单元计算后,得到输出。输出可以使用sigmoid(logistic)激活函数。
x
0
=
1
x_0=1
x0=1称为偏置项,有时画出,有时不画出。
神经网络:有输入层、隐藏层、输出层。
x
0
=
1
x_0=1
x0=1称为偏置项,有时画出,有时不画出。
神经网络中的计算:
前向传播计算过程的向量表示:
神经网络与Logistic回归相比,隐藏层能够学习更加复杂的特征。
有两个隐藏层的神经网络结构:
四、例子与直观理解(Example and Intuitions)
神经网络实现逻辑与运算:
神经网络实现逻辑或运算:
神经网络实现同或运算:
神经网络可以利用更深的层来计算更复杂的函数。
五、多元分类(Multi-class Classification)
四分类问题:神经网络的输出是一个四维的向量,每个元素代表着一种分类,如下图。