机器学习:神经网络的模型构建

什么是神经网络

神经网络是一种模拟人脑工作原理,从而实现类人工智能的机器学习技术,支持处理图像、文本、语音以及序列多种类型的数据,可以实现分类、回归和预测等。


简单的神经元:逻辑单元(Logistic Unit)

由于神经网络建立在很多个神经元的基础上,其中每一个神经元都是一个学习模型,这些神经元叫做激活单元(Activation Unit)。以逻辑回归模型为例,采纳一些特征作为输入,给出逻辑输出,如下图:

Logistic Unit

也可以用简单的式子来表示: \left[ \begin{matrix} x_{0}\\ x_{1}\\ x_{2}\\ x_{3}\\\end{matrix}\right]\rightarrow [\space\space\space\space\space\space]\rightarrow h_{\theta}(x) .

图中空心的圆圈就是类似神经元的东西,类似神经元的树突,这个圆圈的输入神经为它传入信息,然后它对其进行计算,再通过它的输出神经(轴突)将得到的结果信息传出。

其中:h_{\theta}(x) = \frac{1}{1+e^{-\theta^{T}X}} (激励函数,activation function ),x=\left[ \begin{matrix} x_{0}\\ x_{1}\\ x_{2}\\ x_{3}\\\end{matrix}\right](输入), \theta=\left[ \begin{matrix} \theta_{0}\\ \theta_{1}\\ \theta_{2}\\ \theta_{3}\\\end{matrix}\right] (权重,weights).

这就是最简单的一种模拟神经元的逻辑单元模型。我们在机器学习中的目标就是,得到最合适的权重组合,使得整个神经网络的预测效果达到最佳。

【总结】一个神经元的组成:

  • 输入数据
  • 线性加权
  • 激励函数(非线性,易求导)
  • 输出数据

神经网络的模型表示

神经网络就是多个神经元组合到一起的集合,如下图:

Neural Network

有时第一层也要加上额外的节点 x_{0} ,第二层加一个偏执单元(bias unit)a_{0}^{(2)} 。图中 Layer 1 叫做输入层(Input Layer),Layer 3 叫做输出层(Output Layer),Layer 2 叫做隐藏层(Hidden Layer)。输入层和输出层只有一个,而隐藏层可以有多个,实际上非输入层或非输出层的层都是隐藏层。

我们规定:a_i^{(j)} 表示第 j 层的第 i 个神经元, \Theta^{(j)} 为一个权重矩阵,控制从第 j 层到第 j+1 层的映射。在上图的神经网络中,第二层的数据可以表示为:

a_1^{(2)}=g(\Theta_{10}^{(1)}x_0+\Theta_{11}^{(1)}x_1+\Theta_{12}^{(1)}x_2+\Theta_{13}^{(1)}x_3)
a_2^{(2)}=g(\Theta_{20}^{(1)}x_0+\Theta_{21}^{(1)}x_1+\Theta_{22}^{(1)}x_2+\Theta_{23}^{(1)}x_3)

a_3^{(2)}=g(\Theta_{30}^{(1)}x_0+\Theta_{31}^{(1)}x_1+\Theta_{32}^{(1)}x_2+\Theta_{33}^{(1)}x_3)

其中的 g(x) 代表的是激励函数,也就是说这里的激励函数作用在输入数据经过权重处理后的线性组合上。参数矩阵 \Theta^{(1)} 控制了三个输入单元到三个隐藏单元的映射,因此它是一个维度为 3x4 的矩阵。

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)}) .

一般来说,如果一个神经网络在第 j 层有 s_{j} 个单元,在第 j+1 层有 s_{j+1} 个单元,那么矩阵 \Theta^{j} 控制着第 j 层到第 j+1 层的映射,它的维度为 s_{j+1}\times(s_{j}+1) . 其中第二项的 +1 来自 \Theta^{(j)} 中的偏执节点 x_{0}\Theta_{0}^{(j)} ,也就是说输入层包括偏执节点,而输出层不包括。

接下来,再定义一些额外的项,我们把激励函数 g 括号里的部分记作 z_{i}^{(j)} ,于是上面的表达式可以写作:

a_{1}^{(2)}=g(z_{1}^{(2)})

a_{2}^{(2)}=g(z_{2}^{(2)})

a_{3}^{(2)}=g(z_{3}^{(2)})

h_{\Theta}(x)=a_{1}^{(3)}=g(z^{(3)})

两组式子对比,我们可以看出来: z^{(2)}=\Theta^{(1)}x=a^{(1)}a^{(2)}=g(z^{(2)}) ,其中: z^{(2)}=\left[ \begin{matrix} z_{1}^{(2)}\\ z_{2}^{(2)}\\ z_{3}^{(2)}\\\end{matrix}\right] . 这里 a^{(2)}z^{(2)} 都是三维向量,因此激励函数 g 是逐个作用于 a^{(2)} 中的数据的。

若我们增加一项 a_{0}^{(2)}=1 ,那么 z^{(3)}=\Theta^{(2)}a^{(2)}h_{\Theta}(x)=a^{(3)}=g(z^{(3)}) .

这个计算 h(x) 的过程也叫做前向传播(forward propagation)。

发布了38 篇原创文章 · 获赞 23 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/cyan_soul/article/details/79721795