深度学习为什么强大?神经网络的发展与突破!

系列文章见: 《回忆AI时代-从图灵机到人工智能》

什么是深度学习

深度学习是一种机器学习方法,采用多层神经网络(称为深度神经网络)模拟人脑的决策机制。深度学习为大多数人工智能 (AI) 应用提供动力,广泛应用于图像识别、语音识别和自然语言处理 (NLP)等领域。 这里的“深度”是:

1
2
3
4
5
6
7
8
9
10
11
输入层(图片像素)

隐藏层1(识别边缘)

隐藏层2(识别纹理)

隐藏层3(识别眼睛、耳朵)

隐藏层4(组合成猫的特征)

输出层(判断是否为猫)

层数越多,网络就越“深”。

深度学习的演变

2006年,通常被认为是现代深度学习的起点,Geoffrey Hinton发表论文《A Fast Learning Algorithm for Deep Belief Nets》提出逐层预训练方法,解决深层网络训练困难的问题。

2012年,图像识别竞赛中(ImageNet Large Scale Visual Recognition Challenge),Geoffrey Hinton团队开发的AlexNet取得压倒性胜利,错误率传统方法26%,AlexNet15%。从此业界开始关注并投入深度学习,深度学习进入了黄金时代。

案例

Scikit-learn(简称 sklearn)是Python最流行的传统机器学习库之一,适合学习机器学习和神经网络基础。业界有两种常见框架Sklearn和TensorFlow,它们区别:

项目 scikit-learn TensorFlow
学习难度 简单 较复杂
聚类 支持 不擅长
分类 支持 支持
神经网络 简单版 专业版
深度学习 不支持 支持
GPU训练 不支持 支持
入门推荐 ⭐⭐⭐⭐⭐ ⭐⭐⭐

所以推荐用Scikit-learn。

案例
假设:

1
2
3
4
5
输入 x
输出 y

规律:
y = 2x

数据规律:

x y
1 2
2 4
3 6
4 8

安装Scikit-learn。

1
pip install scikit-learn

Python代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from sklearn.neural_network import MLPRegressor
import numpy as np

# 训练数据
X = np.array([[1], [2], [3], [4]])
y = np.array([2, 4, 6, 8])

# 神经网络
model = MLPRegressor(
hidden_layer_sizes=(5,), # 隐藏层5个神经元
activation='relu',
max_iter=5000,
random_state=42
)

# 训练
model.fit(X, y)

# 预测
print(model.predict([[5]]))

它的网络结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
输入层
x



隐藏层
○ ○ ○ ○ ○




输出层
y

实际上神经网络在不断调整:

1
2
权重(w)
偏置(b)

让预测值越来越接近真实值。