美文网首页
哲哲的ML笔记(十五:非线性表述与神经网络模型假设)

哲哲的ML笔记(十五:非线性表述与神经网络模型假设)

作者: 沿哲 | 来源:发表于2021-03-31 18:08 被阅读0次

为什么需要非线性假设

无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大
下面是一个例子(g代表S函数
仅以两个特征为例,如果决策边界比较复杂,假设函数h_\theta也会很复杂


当我们使用x_1、x_2, 的多次项式进行预测时,我们可以应用的很好。 之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。假设我们有非常多的特征,例如大于100个变量,我们希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合(x_1x_2+x_1x_3+……x_{99}x_{100}),我们也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了。计算复杂度为O(n^2)

假设我们希望训练一个模型来识别视觉对象(例如识别一张图片上是否是一辆汽车),我们怎样才能这么做呢?一种方法是我们利用很多汽车的图片和很多非汽车的图片,然后利用这些图片上一个个像素的值(饱和度或亮度)来作为特征
在下图中,车的位置取决于像素点1和像素点2的亮度,用+表示汽车图片,-表示非汽车图


假使我们采用的都是50x50像素的小图片,并且我们将所有的像素视为特征,则会有 2500个特征,如果我们要进一步将两两特征组合构成一个多项式模型,则会有约\frac{2500^2}{2}个(接近3百万个)特征。普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络!

模型表示

神经网络逐渐兴起于二十世纪八九十年代,应用得非常广泛。但由于各种原因,在90年代的后期应用减少了。但是最近,神经网络又东山再起了。其中一个原因是:神经网络适用计算量偏大的算法。

每一个神经元都可以被认为是一个处理单元/神经核(processing unit/Nucleus),它含有许多输入/树突(input/Dendrite),并且有一个输出/轴突(output/Axon)。神经网络是大量神经元相互链接并通过电脉冲来交流的一个网络。



人类思考的模型:我们的神经元把自己的收到的消息进行计算,并向其他神经元传递消息。这也是我们的感觉和肌肉运转的原理。如果你想活动一块肌肉,就会触发一个神经元给你的肌肉发送脉冲,并引起你的肌肉收缩。如果一些感官:比如说眼睛想要给大脑传递一个消息,那么它就像这样发送电脉冲给大脑的。

神经网络模型建立在很多神经元之上,每一个神经元又是一个个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。下图是一个以逻辑回归模型作为自身学习模型的神经元示例,在神经网络中,参数又可被成为权重(weight),即我们之间认识的\theta


通常设置x_0bias unit
当神经元数量比较多时,参照下图。神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):

a^j_i: 第j层的第i个激活单元
\theta^j:从第j层映射到j+1层的权重矩阵,例如 \theta^1 表示从第一层映射到第二层的权重矩阵,维度是 第j+1层的激活单元数量*第j层的激活单元数量+1,为3*4
激活函数表达式
a^2_1=g(\theta^1_{10}x_0+\theta^1_{11}x_1+\theta^1_{12}x_2+\theta^1_{13}x_3)
a^2_2=g(\theta^1_{20}x_0+\theta^1_{21}x_1+\theta^1_{22}x_2+\theta^1_{23}x_3)
a^2_3=g(\theta^1_{30}x_0+\theta^1_{31}x_1+\theta^1_{32}x_2+\theta^1_{33}x_3)

输出表达式
h_\theta(x)=a^3_1=g(\theta^2_{10}a^2_0+\theta^2_{11}a^2_1+\theta^2_{12}a^2_2+\theta^2_{13}a^2_3)

使用向量化的方法,令z^{(2)}=\theta^1x a^2=g(z^{(2)}),因为笔者较懒,本文大多数将z^{(2)}写作z^2
\begin{equation} x = \left[ \begin{array}{ccc} x_0 \\ x_1 \\ x_2 \end{array} \right] \end{equation}

\begin{equation} z^2 = \left[ \begin{array}{ccc} z^2_1 \\ z^2_2 \\ z^2_3 \end{array} \right] \end{equation}
所以,能得到:
\begin{equation} \left[ \begin{array}{c} a^2_1 \\ a^2_2 \\ a^2_3 \end{array} \right] = g\left[ \left[ \begin{array}{ccc} \theta^1_{10} & \theta^1_{11} & \theta^1_{12} & \theta^1_{13}\\ \theta^1_{20} & \theta^1_{21} & \theta^1_{22} & \theta^1_{23}\\ \theta^1_{30} & \theta^1_{31} & \theta^1_{32} & \theta^1_{33} \end{array} \right] \left[ \begin{array}{c} x_{0} \\ x_{1} \\ x_{2} \\ x_{3} \end{array} \right] \right] \end{equation}

同理,z^3=\theta^2a^2, h_\theta(x)=a^3=g(z^3)

\begin{equation} \left[ \begin{array}{c} h_\theta(x) \end{array} \right] = g\left[ \left[ \begin{array}{ccc} \theta^2_{10} & \theta^2_{11} & \theta^2_{12} & \theta^2_{13} \end{array} \right] \left[ \begin{array}{c} a^2_{0} \\ a^2_{1} \\ a^2_{2} \\ a^2_{3} \end{array} \right] \right] \end{equation}

理解神经网络与线性回归、逻辑回归的联系

将上图的左侧结构遮住


其实神经网络就像是logistic regression,只不过我们把logistic regression中的输入向量 x_1, x_2,……,x_n变成了中间层的a^2_1, a^2_2, a^2_3, 即: h_\theta(x)=g(\theta^2_0a^2_0+\theta^2_1a^2_1+\theta^2_2a^2_2+\theta^2_3a^2_3) 我们可以把a^2_0,a^2_1,a^2_2,a^2_3看成更为高级的特征值,也就是的进化体,并且它们是由x\theta 与决定的,因为是梯度下降的,所以是变化的,并且变得越来越厉害,所以这些更高级的特征值远比仅仅将x 次方厉害,也能更好的预测新数据。 这就是神经网络相比于逻辑回归和线性回归的优势。

相关文章

网友评论

      本文标题:哲哲的ML笔记(十五:非线性表述与神经网络模型假设)

      本文链接:https://www.haomeiwen.com/subject/uhfyhltx.html