机器学习(六)——神经网络

目录

 

 

一、前言

二、非线性假设

三、模型展示

四、例子与直觉理解

五、神经网络多元分类


 

一、前言

  1. 吴恩达视频课第九章神经网络笔记
  2. 图片与例子均来自吴恩达视频课截图
  3. 如吴恩达老师视频课所说,很多教材将θ成为权重,此处依然采用参数这个说法
  4. 因为正则化的内容比较少,这一章的学习与上一章正则化的学习都是昨天一起学的,学完就没时间做笔记,今天同时把两篇一起更新了

二、非线性假设

神经网络是一个很古老的算法,不过在很长的一段时间内受计算机的机能所限,这个算法没有太大的进展。直到了现在,计算机的飞速发展,计算科学家们又重新拾起了神经网络这一个强大的算法。在一些特征值很多的问题中,如果我们用普通的线性回归和Logistics回归的话,计算量会很大很大,复杂度会成几何式增长,同时也会很容易产生过拟合的现象。神经网络就很适合计算机图像识别,语音识别这种特征量特别多的问题。

三、模型展示

神经网络算法是模拟人类大脑工作的原理。人类大脑里充满了这样的神经元。神经元会通过轴突发送高于一定阀值的神经信号到达下一个神经元,这样不断的传递信息,来达到各种功能。

在神经网络中我们用一个很简单的模型来模拟神经网络:

不同的数据进入这个黄色的圆圈里通过计算后输出,这一个过程来模拟神经元的工作。这个h(x)就是激励函数。必要时我们可以在输入的结点加上一个x_0节点来当做偏置单元,不过约定熟成的将这个单元的数值设置为1。


而神经网络就是一组多个这样的神经元模型链接在一起形成的一个网络模型,比如下图所示:

Layer1层称为输入层,输入我们的特征值x_1,x_2,x_3.....x_n。

Layer2层到最一层之前都叫做隐藏层。为了简化模型,上图只给出一层隐藏层,即Layer2。

最后一层,即图中的Layer3层我们就叫做输出层,输出最终假设的结果。


神经网络的计算过程,需要注意的是计算的时候需要加上偏置单元:

这里的θ是每一条连线上的权重矩阵,下标的十位数表示是第几个输入元,个位表示是第几条连线,上标表是第几层的参数矩阵。而这里的g(z)就是sigmoid函数。

四、例子与直觉理解

将通过例子来直观的理解神经网络的工作过程。这次通过简单的异或运算。

就如下图左图,当然也可以复杂为下图的右图

如下图,红叉表示为1,蓝圈表示0。

先构建一个神经元节点来表示逻辑和的运算,分别给每一条链接上的参数分别赋值-30,20,20。这样我们神经元计算的也就是h(x)= g(20*x_1 + 20 * x_2 + -30)。根据sigmoid的特点,当z=4.6时2,g(z)≈0.99,这已经是一个无限趋于1的值。根据函数的对称性,z=-4.6时,g(z)≈0.01,同理是一个无限趋于0的值。

再构建一个神经元节点来表示逻辑和的运算,分别给每一条链接上的参数分别赋值-10,20,20。这样神经元计算的也就是h(x)= g(20*x_1 + 20 * x_2 -10), 分别再把四种不同的输入进去来看看这个神经元的计算结果。

可以构建如下三个神经元

五、神经网络多元分类

神经网络也可以进行分类这里也是举个例子。

上述神经网络由四个输出,每个输出分别对应为行人,汽车,摩特车与卡车。

当得到的输出结果为\begin{bmatrix} 1 & 0 & 0 & 0 \\ \end{bmatrix} ^T,便将其归为行人,若\begin{bmatrix} 0 & 1 & 0 & 0 \\ \end{bmatrix} ^T便将其归为汽车。

当然日常生活中可以同时归为好几个类别,都可以通过0,1来表示是否归为该类。


 

发布了22 篇原创文章 · 获赞 0 · 访问量 592

猜你喜欢

转载自blog.csdn.net/SampsonTse/article/details/103830371