【机器学习】神经网络入门
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
神经网络
非线性假设
如果对于下图使用Logistics回归算法如果只有x1和x2两个特征的时候Logistics回归还是可以较好地处理的。它可以将x1和x2包含到多项式中
但是有很多问题所具有的特征远不止两个甚至是上万个如果我们想要包含很多特征那Logistics回归的假设函数将会相当复杂。这些多项式的项数是以n^2的速度增长的。一方面运算量十分大而且想要进行正则化调整也很难。 这么庞大的特征空间使得对特征的增删查改都十分困难因此我们需要另寻出路。
比如在计算机视觉中判断一张图片是否是汽车我们有很多图片一些是汽车而一些不是汽车先取出汽车的局部特征看一下
固定取出每张图片的两个固定位置的像素点pixel1和pixel2将他们标记在以pixel1的灰阶强度为横轴、pixel2的灰阶强度为纵轴的表上也就是将pixel1和pixel2的灰阶强度作为图片的两个特征。不断地往图表中添加数据如下图
这只是两个像素之间的关系的表格我们应该将所有像素都加入进去假设我们的图片都是50x50像素的这样的图片相当“马赛克”是吧那么就总共有2500个像素点。两个像素点之间的关系需要在一个二维表上表示那么一个拥有2500个像素点的图片则需要在一个2500维的表上标识换言之如果只是两个像素那么一个汽车图片实例的向量为
[
p
i
x
e
l
1
p
i
x
e
l
2
]
\begin{bmatrix} pixel1\\ pixel2 \end{bmatrix}
[pixel1pixel2]
而拥有2500个像素点的汽车实例的向量为
[
p
i
x
e
l
1
p
i
x
e
l
2
p
i
x
e
l
3
.
.
.
p
i
x
e
l
2500
]
\begin{bmatrix} pixel1\\ pixel2\\ pixel3\\ ...\\ pixel2500 \end{bmatrix}
pixel1pixel2pixel3...pixel2500
这里的例子一个像素还只是含有灰阶强度一个信息这样的图片还只是黑白双色的如果我们处理彩色图片则需要采用RGB来表示一个像素 那么一个像素将会携带红绿蓝三种信息。届时一张50x50的图片就拥有7500个特征这么庞大的特征数量恐怕是传统的回归函数难以处理的
神经网络详解
神经网络的起源是人类试图去模仿大脑的运作方式。首先我们来看一个神经元。
在一个神经元中有若干个树突树突用于向该神经元传递信息以及有一个轴突轴突则是该神经元向外也就是其他神经元传递信息虽然只有一条轴突但是轴突终端分出来的细支使得神经元可以同时向多个神经元传递信息。简而言之神经元就是一个计算单元接收了若干电信号后对电信号进行处理并且将结果输出给其他神经元。
在一个神经网络里我们将神经元的交互过程简化为一个很简单的模型一个神经元就是一个逻辑单元。在神经网络中激活函数就是我们曾经说的Logistic函数
g
(
z
)
=
1
/
1
+
e
−
θ
T
x
g(z)=1/1+e^{-\theta^Tx}
g(z)=1/1+e−θTx对应的参数
θ
j
\theta_j
θj有时候也会被称之为权重
神经网络是一组神经元连接起来的组合x1,x2,x3向第二层的神经元输入数据然后第二层神经元处理后再向第三层的输出如下图所示。但是需要注意的是一般x0会被我们人为的隐藏因为x0是固定等于1的它不会受上一层的影响但是会影响到下一层的结果为什么恒为1可以看前面的线性回归内容也可以直接私信我。
一般第一层被称之为输入层最后一层又被称之为输出层中间的层级被称之为隐藏层神经网络可能会有许多层级。在深入探讨神经网络之前我们先规定一些记号用于后续的展开
- a i ( j ) a_i^{(j)} ai(j)用于表示第j层第i个神经单元的激活项表示该神经单元计算并输出的值
- Θ ( j ) \Theta^{(j)} Θ(j)表示的是权重矩阵表示的是从第j层到第j+1层的映射
看起来有点难懂不如直接看下面的
看上面的图可以知道
a
1
(
2
)
a_1^{(2)}
a1(2)也就是第二层第一个激活值是和第一层的x1,x2,x3有关的实际上他的式子如下
a
1
(
2
)
=
g
(
z
1
(
2
)
)
=
g
(
Θ
10
(
1
)
x
0
+
Θ
11
(
1
)
x
1
+
Θ
12
(
1
)
x
2
+
Θ
13
(
1
)
x
3
)
a_1^{(2)} = g(z_1^{(2)})=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)
a1(2)=g(z1(2))=g(Θ10(1)x0+Θ11(1)x1+Θ12(1)x2+Θ13(1)x3)
其中
Θ
10
(
1
)
\Theta_{10}^{(1)}
Θ10(1)表示的是从x0映射到第二层第一个节点
a
1
(
2
)
a_1^{(2)}
a1(2)的权重函数g(z)是Logistic函数
照猫画虎我们还可以写出如下的内容:
a
2
(
2
)
=
g
(
z
2
(
2
)
)
=
g
(
Θ
20
(
1
)
x
0
+
Θ
21
(
1
)
x
1
+
Θ
22
(
1
)
x
2
+
Θ
23
(
1
)
x
3
)
a_2^{(2)} = g(z_2^{(2)})=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)
a2(2)=g(z2(2))=g(Θ20(1)x0+Θ21(1)x1+Θ22(1)x2+Θ23(1)x3)
a
3
(
2
)
=
g
(
z
3
(
2
)
)
=
g
(
Θ
30
(
1
)
x
0
+
Θ
31
(
1
)
x
1
+
Θ
32
(
1
)
x
2
+
Θ
33
(
1
)
x
3
)
a_3^{(2)} = g(z_3^{(2)})=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)
a3(2)=g(z3(2))=g(Θ30(1)x0+Θ31(1)x1+Θ32(1)x2+Θ33(1)x3)
如果你学习过线性代数就知道方程组和矩阵是可以相互转化的我们将这个方程组中的参数 Θ \Theta Θ转化为矩阵形式就可以得到一个3行4列矩阵
Θ
(
1
)
=
[
Θ
10
(
1
)
Θ
11
(
1
)
Θ
12
(
2
)
Θ
13
(
1
)
Θ
20
(
1
)
Θ
21
(
1
)
Θ
22
(
2
)
Θ
23
(
1
)
Θ
30
(
1
)
Θ
31
(
1
)
Θ
32
(
2
)
Θ
33
(
1
)
]
\Theta^{(1)} = \begin{bmatrix} \Theta_{10}^{(1)}& \Theta_{11}^{(1)} & \Theta_{12}^{(2)} &\Theta_{13}^{(1)}\\ \Theta_{20}^{(1)}& \Theta_{21}^{(1)} & \Theta_{22}^{(2)} &\Theta_{23}^{(1)}\\ \Theta_{30}^{(1)}& \Theta_{31}^{(1)} & \Theta_{32}^{(2)} &\Theta_{33}^{(1)}\\ \end{bmatrix}
Θ(1)=
Θ10(1)Θ20(1)Θ30(1)Θ11(1)Θ21(1)Θ31(1)Θ12(2)Θ22(2)Θ32(2)Θ13(1)Θ23(1)Θ33(1)
这个就是我们所说的权重矩阵
接下来我们讨论下神经网络的向量化。上面的方程组可以简写为
a
1
(
2
)
=
g
(
z
1
(
2
)
)
a_1^{(2)} = g(z_1^{(2)})
a1(2)=g(z1(2))等因此我们可以将特征向量x定义为
x
=
[
x
0
x
1
x
2
x
3
]
x=\begin{bmatrix} x_0\\ x_1\\ x_2\\ x_3 \end{bmatrix}
x=
x0x1x2x3
将权重矩阵定义为
KaTeX parse error: Expected '}', got '\end' at position 63: …\ z_3^{(2)}\\ \̲e̲n̲d̲{bmatrix}
拥有了向量化的神经网络后我们可以使用向量一次性处理大量数据比如我想求出第二层节点
a
(
2
)
a^{(2)}
a(2)的值则使用
z
(
2
)
=
Θ
(
1
)
x
,
a
(
2
)
=
g
(
z
(
2
)
)
z^{(2)}=\Theta^{(1)}x,a^{(2)}=g(z^{(2)})
z(2)=Θ(1)x,a(2)=g(z(2))
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |