机器学习——神经网络

Posted daizigege

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习——神经网络相关的知识,希望对你有一定的参考价值。

一、神经网络:

1.1非线性假设:

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

使用非线性的多项式项,能够帮助我们建立更好的分类模型 ,但与此同时他们的特征组合就有很多。普通的线性模型无法处理,就需要神经网络。

1.2模型表示1

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

每一个神经元又是一个学习模型。这些神经元(也叫激活单元,activation unit)采纳一些特征作为输出,并且根据本身的模型提供一个输出。

神经元图:

技术图片

神经网络图:
技术图片

其中:第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers) 。

一般我们为每一层都增加一个偏差单位(bias unit)然后每层的一个节点都有自己的权重,这样其实就是等价于一个线性模型:y=kx+b;

技术图片

(a_i^{(j)}) 代表第j层的第i个激活单元,( heta^{(j)}) 代表从第j层映射到第j+1层时的权重矩阵。

对于

技术图片

特征矩阵的一行给了神经网络,得到( heta*X=a);

1.3模型表示2

利用向量化的方法会使得计算更方便:(a^{(i)}=g( heta^{(i-1)}a^{(i-1)})) (其中每次计算完,都要在后面加一个(a_0^{(i)}=1),其中(a^{(0)}=x) )

如果是整个训练集的话:(a^{(i)}=g( heta^{(i-1)}a^{(i-1)}) 其中a^{(0)}=X^T) (需要使得每一列是特征)

如果遮住左半部分,其实就是逻辑回归;(别忘了加个(a_0^{(2)}) =1),其实(a^{(2)}) 是更高级的特征,他们是X决定的,这些特征值比x次方厉害很多,也能更好地预测新数据。

技术图片

1.4多类分类

当我们有不止两种分类时(也就是y=1,2,3...k),输出就是k个维度,是哪一类,哪一个位置就是1,其余全为1.

(left [ egin{matrix}1end{matrix} ight])

二、神经网络的学习

2.1代价函数

符号说明:

m:样本个数

(x,y):一组输入输出

L:神经网络层数

(L_l): 每层的神经元个数

(S_L) :最后一层中处理单元的个数

二分类:(S_L=1) ,y=0 or 1代表哪一类;

K 类分类 :(S_L=k) ,(y_i=1) 表示分到第i类;

代价函数:
[ J( heta)=-frac{1}{m}[sum_{i=1}^msum_{k=1}^ky_k^{(i)}log(h_ heta(x^{(i)}))_k+(1-y_k^{(i)})log(1-(h_ heta(x^{(i)}))_k)+frac{lambda}{2m}sum_{l=1}^{L-1}sum_{i=1}^{s_l}sum_{j=1}^{s_{l+1}}( heta_{ji}^{(l)})^2] ]

2.2反向传播算法

2.2.1算法概述:

为了计算代价函数的偏导数(frac{partial}{partial heta_{ij}^{(l)}}J( heta)) ,需要从后面一层一层反向求出各层的误差。

假设:(K=4,S_L=4,L=4;)

那么:(delta^{(4)}=a^{(4)}-y;delta^{(3)}=( heta^{(3)})^Tdelta^{(4)}g'(z^{(3)}),其中g'(z^{(3)})=a^{(3)}*(1-a^{(3)}))

如果不做任何正则化处理,那么(frac{partial}{partial heta_{ij}^{(l)}}J( heta)=a_j^{(l)}delta_i^{l+1})

(l):目前所计算的是第几层;

j:目前计算层中的激活单元的下标,也将是下一层的第j个输入变量的下标

i:代表下一层中误差单元的下标,是收到权重矩阵中的第i行影响的下一层中的误差单元的下标

训练集为矩阵:

技术图片

(D_{ij}^{(l)}=frac{partial}{partial heta_{ij}^{(l)}}J( heta))就是要计算的偏导数;

2.2.2反向传播的直观理解:

参考网站:

http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html

2.3梯度检验:

模型较为复杂时,可能存在不易察觉的错误。我们用梯度的数值检验这样的错误。

通过计算( heta)两边很近的代价值构成的直线的斜率来估计该点的梯度值。

如对( heta_1进行检验)

技术图片

2.4神经网络流程:

我们真正要决定的是隐藏层的层数和每个中间层的单元数。

训练神经网络:

  1. 参数的随机初始化
  2. 利用正向传播方法计算所有的 (h_ heta(x))
  3. 编写计算代价函数(J)的代码
  4. 利用反向传播方法计算所有偏导数
  5. 利用数值检验方法检验这些偏导数
  6. 使用优化算法来最小化代价函数!

以上是关于机器学习——神经网络的主要内容,如果未能解决你的问题,请参考以下文章

机器学习12卷积神经网络

机器学习--神经网络

自动化机器学习神经网络架构搜索综述(NAS)

学习《神经网络与机器学习(第3版)》高清英文PDF+中文PDF

深度学习和传统的人工神经网络机器学习有啥区别? [关闭]

机器学习:神经网络之表达