吴恩达机器学习 -- 神经网络学习

9.1 非线性假设

无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。

吴恩达老师举了一个例子:

吴恩达机器学习 -- 神经网络学习_第1张图片

当我们使用\small x_{1},x_{2} 的多次项式进行预测时,我们可以应用的很好。 之前课程学习过,使用非线性的多项式项,能够建立更好的分类模型。假设有非常多的特征,例如大于100个变量,希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便只采用两两特征的组合,也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了。

老师紧接着又举了一个计算机视觉的问题:

吴恩达机器学习 -- 神经网络学习_第2张图片

 假设选用灰度图片,每个像素点只有一个值(RGB有三个),可以选取图片上的两个不同位置上的两个像素,然后训练一个逻辑回归算法利用这两个像素的值来判断图片上是否是汽车。假设采用50x50像素的小图片,并将所有的像素视为特征,会有 2500个特征,如果要进一步将两两特征组合构成一个多项式模型,则会有接近3百万个特征。

普通的逻辑回归模型,不能有效地处理这么多的特征,这时候就需要神经网络模型。

 

9.3 模型展示1

大脑中的神经网络结构如下图所示,Dendrite['dendraɪt]是树突,接收来自其他神经元的信号;Axon['æksɒn]是轴突,向其他神经元输出经过此神经元处理过的信息。

神经网络就是大量神经元相互链接并通过电脉冲来交流的一个网络。

吴恩达机器学习 -- 神经网络学习_第3张图片

 

神经网络模型建立在很多神经元 之上,每个神经元是一个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输入,并且根据本身的模型提供一个输出。

下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数 \small \theta 又可被成为权重(weight)。

吴恩达机器学习 -- 神经网络学习_第4张图片

 类似于神经元的神经网络,效果如下:

吴恩达机器学习 -- 神经网络学习_第5张图片

其中: \small x_{1},x_{2},x_{3} 是输入单元,将原始数据输入给它们,处于输入层; \small a_{1},a_{2},a_{3} 是中间单元,负责将数据进行处理,然后呈递到下一层;最后是输出单元,它负责计算 \small h_{\theta}(x)

神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。

下图为一个3层的神经网络,第一层为输入层(Input Layer),最后一层为输出层(Output Layer),中间一层为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):

吴恩达机器学习 -- 神经网络学习_第6张图片

一些标记:

\small a_{i}^{(j)}:第 \small j 层的第 \small i 个激活单元

\small \theta^{(j)}:从第 \small j 层映射到第 \small j+1 层的权重矩阵;例如 \small \theta^{(1)} 代表从第1层映射到第2层的权重矩阵,其大小为:第 \small j+1 层的激活单元数量为行数,以第 \small j 层的激活单元数加1 为列数的矩阵。

对上述模型,激活单元和输出分别表达为:

\small a_{1}^{(2)}=g(\Theta _{10}^{(1)}x_{0}+\Theta _{11}^{(1)}x_{1}+\Theta _{12}^{(1)}x_{0}+\Theta _{13}^{(1)}x_{3})

\small a_{2}^{(2)}=g(\Theta _{20}^{(1)}x_{0}+\Theta _{21}^{(1)}x_{1}+\Theta _{22}^{(1)}x_{0}+\Theta _{23}^{(1)}x_{3})

\small a_{3}^{(2)}=g(\Theta _{30}^{(1)}x_{0}+\Theta _{31}^{(1)}x_{1}+\Theta _{32}^{(1)}x_{0}+\Theta _{33}^{(1)}x_{3})

\small h_{\Theta }(x)=a_{1}^{(3)}=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)})

\small x,\Theta ,a 分别用矩阵表示:

\small x=\begin{bmatrix} x_{0}\\ x_{1}\\ x_{2}\\ x_{3} \end{bmatrix}, \Theta =\begin{bmatrix} \Theta _{10} & ...& ...& \Theta _{13}\\ ... & ...& ... &... \\ ...& ... &... & \Theta _{33} \end{bmatrix},a=\begin{bmatrix} a_{1}\\ a_{2}\\\ a_{3}\ \end{bmatrix},可得 \small \Theta \cdot x=a

观察上面的式子,每一个 \small a 都是由上一层所有 \small x的和每一个 \small x 所对应的 \small \Theta 决定的。

把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION ))

 

9.4 模型展示2

相对于使用循环来编码,利用向量化的方法会使得计算更为简便。以上面的神经网络为例,试着计算第二层的值:

\small \Theta _{10}^{(1)}x_{0}+\Theta _{11}^{(1)}x_{1}+\Theta _{12}^{(1)}x_{0}+\Theta _{13}^{(1)}x_{3} 定义为 \small z_{1}^{(2)},其他类似

\small 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}

 

\small x=\begin{bmatrix} x_{0}\\ x_{1}\\ x_{2}\\ x_{3} \end{bmatrix}, \Theta =\begin{bmatrix} \Theta _{10} & ...& ...& \Theta _{13}\\ ... & ...& ... &... \\ ...& ... &... & \Theta _{33} \end{bmatrix},a=\begin{bmatrix} a_{1}\\ a_{2}\\\ a_{3}\ \end{bmatrix}

\small g(\begin{bmatrix} \Theta _{10}^{(1)} & \Theta _{11}^{(1)} &\Theta _{12}^{(1)} &\Theta _{13}^{(1)} \\ \Theta _{20}^{(1)}& \Theta _{21}^{(1)} &\Theta _{22}^{(1)} &\Theta _{23}^{(1)} \\ \Theta _{30}^{(1)} & \Theta _{31}^{(1)}&\Theta _{32}^{(1)} &\Theta_{33}^{(1)} \end{bmatrix}\times \begin{bmatrix} x_{0}\\ x_{1}\\ x_{2}\\ x_{3} \end{bmatrix})=g(\begin{bmatrix} \Theta _{10}^{(1)}x_{0}+\Theta _{11}^{(1)}x_{1}+\Theta _{12}^{(1)}x_{2}+\Theta _{13}^{(1)}x_{3}\\ \Theta _{20}^{(1)}x_{0}+\Theta _{21}^{(1)}x_{1}+\Theta _{22}^{(1)}x_{2}+\Theta _{23}^{(1)}x_{3}\\ \Theta _{30}^{(1)}x_{0}+\Theta _{31}^{(1)}x_{1}+\Theta _{32}^{(1)}x_{2}+\Theta _{33}^{(1)}x_{3} \end{bmatrix})= \ \ \ \ \ \ \ \ \ \ \begin{bmatrix} a_{1}^{(2)}\\ a_{2}^{(2)}\\ a_{3}^{(2)} \end{bmatrix}

\small z^{(2)}=\Theta ^{(1)}x\small a^{(2)}=g(z^{(2)}),计算后添加 \small a_{0}^{(2)}=1 。 计算输出的值为:

\small g\left ( \begin{bmatrix} \Theta _{10}^{2} &\Theta _{11}^{2} &\Theta _{12}^{2} & \Theta _{13}^{2} \end{bmatrix} \times \begin{bmatrix} a_{0}^{(2)}\\ a_{1}^{(2)}\\ a_{2}^{(2)}\\ a_{3}^{(2)} \end{bmatrix} \right )=g\left ( \Theta _{10}^{(2)}a_{0}^{(2)} + \Theta _{11}^{(2)}a_{1}^{(2)} + \Theta _{12}^{(2)}a_{2}^{(2)} + \Theta _{13}^{(2)}a_{3}^{(2)} \right )=h_{\Theta }(x)

令 令 \small z^{(3)}=\Theta ^{(2)}a^{(2)},则 \small h_{\Theta }(x)=a^{(3)}=g(z^{(3)})

为了更好地了解Neuron Networks的工作原理,先把左半部分遮住:

右半部分其实就是以 \small a_{0},a_{1},a_{2},a_{3}, 按照Logistic Regression的方式输出:

其实神经网络就像是logistic regression,只不过把logistic regression中的输入向量\small x_{1},x_{2},x_{3} 变成了中间层的 \small a_{1}^{(2)},a_{2}^{(2)},a_{3}^{(2)},可以把 \small a_{0},a_{1},a_{2},a_{3} 看成更高级的特征值,他们由 \small x,\Theta 决定。

 

9.5 例子与直觉展示①

神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。

举例说明:逻辑与(AND);

吴恩达机器学习 -- 神经网络学习_第7张图片

 

 \small \theta_{0}=-30,\theta_{1}=20,\theta_{2}=20,此时 \small h_{\Theta}(x)=g(-30+20x_{1}+20x_{2})

吴恩达机器学习 -- 神经网络学习_第8张图片

从图中可以看出 \small h_{\Theta}(x) \approx x_{1} AND \small x_{2}

接下来是 OR函数的例子:

吴恩达机器学习 -- 神经网络学习_第9张图片

 

9.6 例子与直觉展示②

可以利用神经元来组合成更为复杂的神经网络以实现更复杂的运算。例如我们要实现XNOR 功能(输入的两个值必须一样,均为1或均为0),即 \small XNOR=(X_{1}\ AND\ X_{2})\ OR\ ((NOT\ X_{1})\ AND\ (NOT\ X_{2}))

吴恩达机器学习 -- 神经网络学习_第10张图片

这种方法可以逐渐构造出越来越复杂的函数,也能得到更加厉害的特征值。 

 

9.7 多元分类

如果要训练一个神经网络算法来识别路人、汽车、摩托车和卡车。

输入\small x 有三个维度,有两个中间层,输出层是一个四维向量,也就是每一个数据在输出层都会出现 \small [a,b,c,d]^{T},且a,b,c,d只有一个为1

吴恩达机器学习 -- 神经网络学习_第11张图片

神经网络算法的输出结果为四种可能情形之一: 

\small \begin{bmatrix} 0\\ 0\\ 0\\ 1 \end{bmatrix},\begin{bmatrix} 0\\ 0\\ 1\\ 0 \end{bmatrix},\begin{bmatrix} 0\\ 1\\ 0\\ 0 \end{bmatrix},\begin{bmatrix} 1\\ 0\\ 0\\ 0 \end{bmatrix}

你可能感兴趣的:(机器学习)