系列文章见: 《回忆AI时代-从图灵机到人工智能》
关于神经网络的演进
1943年,神经生理学家 Warren McCulloch(沃伦・麦卡洛克)与天才数理逻辑学家 Walter Pitts(沃尔特・皮茨) 提出人类历史上第一个人工神经元数学模型,是一种模仿人脑神经元工作方式的计算模型简称M-P神经元模型,是现代所有神经网络、深度学习的理论源头。1958年,Frank Rosenblatt提出感知机,在M-P基础上增加权重自动学习规则,解决 “不能训练” 的核心缺陷。
- M-P神经元模型(1943):观察生物神经元工作方式,但它的问题是,没有学习能力、权重是手工设定的和只能做逻辑推理(AND / OR)
- 感知机(1958):第一个“可以学习”的神经网络,引入了权重自动调整并开启机器学习时代。但它的不足只能解决线性可分问题、无法处理XOR、结构太简单(单层)。
- 反向传播(1986):多层神经网络可以训练了,解决“误差如何传回去”的问题。但它的缺点是计算量大(当时CPU很慢)、容易梯度消失(深层训练困难)、数据不够多。
M-P神经元模型
人们观察到生物神经元。
1 | 生物神经元 |
对应抽象的数学公式。
1 | 输入 |
感知机
感知机本质不停调整一条“分界线”,把数据分成两类。它的数学公式y=step(w⋅x+b)
- w:权重(重要程度)
- b:偏置(平移分界线)
- step:激活函数(>0 输出1,否则0)
案例:用感知机推导AND逻辑。
| x1 | x2 | y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Python代码:
1 | import numpy as np |
训练过程中:
- 初期:乱猜
- 中期:开始分开0和1
- 后期:稳定收敛
最终会学到类似:
- w ≈ [0.3, 0.3]
- b ≈ -0.2
什么是神经网络
感知机只能解决线性问题,而神经网络(Neural Network)可以解决非线性问题。譬如我们来解决一个景点案例XOR(异或)问题。
XOR数据:
1 | import numpy as np |
感知机,它解决不了XOR问题。
1 | from sklearn.linear_model import Perceptron |
神经网络,可以解决。
1 | from sklearn.neural_network import MLPClassifier |