1 模型表达I
1.1 大脑中的神经元
神经元是一个计算单元,它从输入神经(Dendrite/树突)接受一定数目的信息,并做一些计算,然后将结果通过它的轴突(Axon)传送到其他节点或者大脑中的其他神经元
如果神经元想要传递一个消息,它就会就通过它的轴突发送一段微弱电流给其他神经元。接下来这个神经元接收这条消息,做一些计算,它有可能会反过来将自己的消息传给其他神经元,这就是所有人类思考的模型: 我们的神经元把自己的收到的消息进行计算,并向其他神经元传递消息。顺便说一下,这也是 我们的感觉和肌肉运转的原理。
1.2 神经模型:逻辑单元
人工神经网络中,我们将神经元模拟成一个逻辑单元,
x
0
、
x
1
、
x
2
、
x
3
x_0、x_1、x_2、x_3
x0、x1、x2、x3称为输入节点(其中
x
0
=
1
x_0=1
x0=1称为偏置单元,是否画出会取决于其对例子是否有利),
x
x
x是特征向量,
θ
\theta
θ是参数向量(在神经网络中被称为权重),以下所示神经元就是一个作为激励函数的人工神经元(黄色小圈圈),
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
h\theta(x)=\frac{1}{1+e^{-\theta^Tx}}
hθ(x)=1+e−θTx1.
神经网络其实就是,这些不同的神经元组合在一起的集合。第一层Layer1称为输入层(Input layer),输入我们的特征项
x
1
、
x
2
、
x
3
x_1、x_2、x_3
x1、x2、x3;最后一层Layer3称为输出层(Output layer),输出我们假设的最终计算结果
h
θ
(
x
)
h_{\theta}(x)
hθ(x);中间层Layer2称为隐藏层(Hidden layer)。
1.3 逻辑单元详解
术语 | 具体含义 |
---|---|
a i ( j ) a^{(j)}_i ai(j) | 第 j j j层的第 i i i个神经元/激励 |
激励(activation) | 由一个具体神经元读入、计算并输出的值 |
Θ ( j ) \Theta^{(j)} Θ(j) | 控制着从第 j j j层到第 j + 1 j+1 j+1层的作用的一个权重矩阵 |
如果第
j
j
j层有
s
j
s_j
sj个单元,第
j
+
1
j+1
j+1层有
s
j
+
1
s_{j+1}
sj+1个的单元,那么
Θ
(
j
)
\Theta^{(j)}
Θ(j)的维数将会是
s
j
+
1
∗
(
s
j
+
1
)
s_{j+1}*(s_j+1)
sj+1∗(sj+1)
2 模型表达II
2.1 前向传播:向量化
Forward propogation: Vectorized implementation
简单来说,这一层的每一个激活单元,都需要由上一层的每一个激活单元乘以一个系数再求和,包裹一个激活函数(此处为
s
i
g
m
o
i
d
sigmoid
sigmoid函数)得到,然后为这一层增加一个偏置单元,继续进行下一层的计算。这种由输入层,逐渐向后计算,计算到输出层的方式,称为前向传播(Forward propagation)。
2.2 神经网络的原理
只看后两层,非常类似于之前的线性回归,
a
1
(
2
)
、
a
2
(
2
)
、
a
3
(
2
)
a^{(2)}_1、a^{(2)}_2、a^{(2)}_3
a1(2)、a2(2)、a3(2)是特征,
Θ
1
(
2
)
、
Θ
2
(
2
)
、
Θ
3
(
2
)
\Theta^{(2)}_1、\Theta^{(2)}_2、\Theta^{(2)}_3
Θ1(2)、Θ2(2)、Θ3(2)是参数(因为是矩阵所以用
Θ
\Theta
Θ)。而复杂特征
a
1
(
2
)
、
a
2
(
2
)
、
a
3
(
2
)
a^{(2)}_1、a^{(2)}_2、a^{(2)}_3
a1(2)、a2(2)、a3(2),则是由简单特征
x
1
、
x
2
、
x
3
x_1、x_2、x_3
x1、x2、x3与参数
Θ
1
(
1
)
、
Θ
2
(
1
)
、
Θ
3
(
1
)
\Theta^{(1)}_1、\Theta^{(1)}_2、\Theta^{(1)}_3
Θ1(1)、Θ2(1)、Θ3(1)得到。
如果在 Θ \Theta Θ中选择不同的参数,有时可以学习到一些很有趣和复杂的特征,就可以得到一个更好的假设(比使用原始输入 x 1 、 x 2 、 x 3 x_1、x_2、x_3 x1、x2、x3时得到的假设更好),或者我们也可以选择多项式项 x 1 x 2 x 3 x_1x_2x_3 x1x2x3等作为输入项,但这个算法可以灵活地快速学习任意的特征项 把这些 a 1 、 a 2 、 a 3 a_1、a_2、a_3 a1、a2、a3输入这个 最后的单元