Machine Learning
  • Introduction
  • 机器学习
    • 前言
      • 符号表
    • 监督式学习
      • 感知机
        • 感知机模型
        • 感知机学习算法
        • 算法python实现
      • Logistic回归
        • Logistic分布
        • Logistic回归模型
        • 算法python实现
      • 线性回归
        • 线性回归模型
        • 算法python实现
      • K近邻法
        • k近邻模型
        • kd树方法
        • kd树python实现
        • knn实例
      • 朴素贝叶斯法
        • 模型和原理
        • 参数估计
        • 算法和实现
      • 决策树
        • 模型与学习
        • 特征选择
        • 生成算法和剪枝
        • python实现
      • 支持向量机
    • 神经网络
      • 神经元模型和感知机
      • 神经网络
      • 神经网络的矩阵表达
      • 反向传播算法
        • 算法证明
        • 算法代码
        • 基于矩阵的计算
      • 改进神经网络的学习方法
        • 交叉熵代价函数
        • softmax
        • regularization
        • 权重初始化
      • 卷积神经网络
        • 基本介绍
    • 数学基础
      • 线性代数
        • 特征值和特征向量
      • 概率统计
        • 随机变量的特征
        • 样本统计量
        • 先验后验概率
      • 微积分
        • 向量内积
        • 方向导数和梯度
        • 梯度下降法
      • 信息论
        • 熵
        • 相对熵和交叉熵
        • 条件熵
        • 互信息
Powered by GitBook
On this page
  • 神经元模型
  • 感知机
  • S 型神经元
  1. 机器学习
  2. 神经网络

神经元模型和感知机

Previous神经网络Next神经网络

Last updated 6 years ago

神经元模型

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所作出的交互反应。

神经网络中最基本的成分是神经元(neuron)模型,即上述定义中的“简单单元”。在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过一个“阈值”(threshold),那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

1943年,McMulloch 和 Pitts 将上述情形抽象为下图所示的简单模型,这就是一直沿用至今的“M-P神经元模型”。

在这个模型中,神经元接收到来自nnn个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接(connection)进行传递,神经元接收到总输入将与神经元的阈值进行比较,然后通过“激活函数”(activation function)处理以产生神经元的输出。

理想中的激活函数是如图a的阶跃函数,它将输入值映射为输出值为“0”或“1”,“1”对应于神经元兴奋,“0”对应于神经元抑制。但是阶跃函数具有不连续、不光滑等不太好的性质,因此实际常用SigmoidSigmoidSigmoid函数作为激活函数。

感知机

感知机(Perceptron)由两层神经元组成,输入层接收外界输入的信号后传递给输出层,输出层是M-P神经元,也称为“阈值逻辑单元”(threshold logic unit)。

感知机能容易地实现逻辑与、或、非运算。y=f(∑i=1nwixi−θ)y=f(\displaystyle\sum_{i=1}^nw_ix_i-\theta)y=f(i=1∑n​wi​xi​−θ),假如fff是上面的阶跃函数,则

  • 与运算

令w1=w2=1w_1=w_2=1w1​=w2​=1,θ=2\theta = 2θ=2,则y=f(1⋅x1+1⋅x2−2)y=f(1 \cdot x_1 + 1\cdot x_2 -2)y=f(1⋅x1​+1⋅x2​−2),仅在x1=x2=1x_1=x_2=1x1​=x2​=1时,y=1y=1y=1,其他时候y=0y=0y=0。

  • 或运算

令w1=w2=1w_1=w_2=1w1​=w2​=1,θ=0.5\theta = 0.5θ=0.5,则 y=f(1⋅x1+1⋅x2−0.5)y=f(1 \cdot x_1 + 1 \cdot x_2 -0.5)y=f(1⋅x1​+1⋅x2​−0.5),当x1=1x_1 =1x1​=1或x2=1x_2=1x2​=1的时候y=1y=1y=1。

  • 非运算

令w1=−0.6w_1 = -0.6w1​=−0.6,w2=0w_2 = 0w2​=0,θ=−0.5\theta = -0.5θ=−0.5,则y=f(−0.6⋅x1+0⋅x2+0.5)y=f(-0.6 \cdot x_1 + 0 \cdot x_2 +0.5)y=f(−0.6⋅x1​+0⋅x2​+0.5),当x1=1x_1=1x1​=1时y=0y=0y=0;当x2=0x_2=0x2​=0时,y=1y=1y=1。

实际上,我们能用感知机网络来计算任何逻辑功能,原因是上面的与或非是通用运算,那样我们可以在多个通用的运算上构建出任何运算。下面是构建一个异或运算。

A

B

Y1=NOT And(A,B)

Y2=OR(A,B)

Y=XOR(A,B)=AND(Y1,Y2)

0

0

1

0

0

0

1

1

1

1

1

0

1

1

1

1

1

0

1

0

多层网络可以完成对更复杂函数的模拟。

S 型神经元

上面的感知机中一个权重或偏置的微小改动有时候会引起那个感知机的输出完全翻转,比如0变到1,那样的翻转可能接下来引起其余网络的行为以极其复杂的方式改变。因此在调整网络的参数的时候,有些输出被正确分类,其他的行为很可能以一些很难控制的方式被完全改变。

我们引入一种称之为S型神经元来克服这个问题。 S型神经元和感知机类似,但是被修改的权重和偏置只会引起输出的微小变化,这对让神经元网络学习起来很关键。

正如一个感知机,S型神经元有多个输入,x1,x2,...xnx_1,x_2,...x_nx1​,x2​,...xn​。对每个输入有权重,w1,w2,...,wnw_1,w_2,...,w_nw1​,w2​,...,wn​和一个总的偏置bbb。但是它的输出不是0或1,它现在是σ(w⋅x+b)\sigma( w \cdot x +b)σ(w⋅x+b),这里σ\sigmaσ被称之为S型函数。定义为:

σ(z)=11+e−z\sigma(z) = \frac{1}{1+e^{-z}}σ(z)=1+e−z1​

也就是:

σ(z)=11+exp(−∑i=1nwixi−b)\sigma(z) = \frac{1}{1+\mathrm{exp}(-\displaystyle\sum_{i=1}^nw_ix_i-b)}σ(z)=1+exp(−i=1∑n​wi​xi​−b)1​

σ\sigmaσ的平滑特性意味着权重和偏置的微小变化,即Δwi\Delta w_iΔwi​和Δb\Delta bΔb,会从神经元产生一个微小的输出变化Δoutput\Delta \mathrm{output}Δoutput,实际上,微积分告诉我们输出变化可以很好的近似表示为(一阶泰勒展开):

Δoutput≈∑i=1∂output∂wiΔwi+∂output∂bΔb\Delta \mathrm{output} \approx \displaystyle\sum_{i=1}\frac{\partial \mathrm{output}}{\partial w_i}\Delta w_i + \frac{\partial \mathrm{output}}{\partial b}\Delta bΔoutput≈i=1∑​∂wi​∂output​Δwi​+∂b∂output​Δb

上面的式子表明,Δoutput\Delta \mathrm{output}Δoutput是一个反映权重和偏置变化(Δwi\Delta w_iΔwi​和Δb\Delta bΔb)的线性函数,这一线性使得选择权重和偏置的微小变化来达到输出的微小变化变得很容易。

pic source:

pic source:

https://www.jianshu.com/p/c46b6d890790
https://www.jianshu.com/p/c46b6d890790