DRL
路线
数学+python及数据分析基础
ML基础
ML实战
- 阿里云天池大赛
- 工业蒸汽预测 天猫用户重复购买预测 O2O优惠券预测 阿里云安全恶意程序检测
- 七个步骤:赛题理解、数据探索、特征工程、模型训练、模型验证、特征优化、模型融合
DL基础
李沐(书+视频)
Pytorch框架
NLP:CS224n
DL实战
[基于ML的文本分类任务]:(https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.12586969.1002.15.6406111aE3Lglg&postId=118254 )
不同深度学习模型
Note
一 深度学习基础
1.1 图灵书基础部分
- 神经网络数学基础:数据表示:张量(tensor,多维Numpy数组)张量维度为轴,轴的个数为阶 标量 向量 矩阵 3+D张量
- 评估模型注意事项:数据代表性–随机打乱 时间箭头–确保测试数据集时间晚于训练数据 数据冗余–确保训练集和验证集没有交集
- 数据预处理:向量化、值标准化、处理缺失值
- 特征工程、过拟合和欠拟合:
- 降低过拟合:more data / 减小网络容量 / 添加权重正则化 / 添加dropout
1.2 PyTorch实践
线性模型、梯度下降算法、反向传播
CrossEntropy损失函数:softmax + NLLLoss
import torch y = torch.LongTensor([0]) z = torch.Tensor([[0.2, 0.1, -0.1]]) criterion = torch.nn.CrossEntropyLoss() loss = criterion(z, y) print(loss)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
+ `torch.squeeze(input, dim=None, *, out=None) → Tensor` 删除一个张量中所有维数为1的维度 dim指定维度 ;`torch.unsqueeze`指定位置扩充一个维度
+ 测试集:
```python
def test():
correct = 0
total = 0
with torch.no_grad():
for data in test_loader:
images, labels = data
outputs = model(images)
_, pred = torch.max(outputs.data, dim=1)
total = labels.size(0)
correct += (pred == labels).sum().item()
print('Accuracy on test: %d %%' % (100 * correct / total))
Diabetes、Titanic、otto
CNN
RNN
D2L
C1 Intro
- 数据集 由样本(数据点/实例)由特征(协变量)–>标签/目标
- ML问题
- 监督学习:回归(squared error)、分类(cross-entropy)、标记、搜索、推荐系统、序列学习
- 无监督学习:聚类、主成分分析、因果关系和概率图模型、生成对抗性网络
- 强化学习:
- 状态完全可观察 markov decision process
- 状态不依赖于之前的动作 contextual bandit problem
- 无状态 只有最初一组未知回报的动作 multi-armed bandit problem
C2 Basic
torch.cat((X, Y), dim=0/dim=1 )
外层堆叠 / 内层拼接- 范数(Lp范数)
- L1:向量元素的绝对值之和
- L2:向量元素平方和的平方根
C3 线性神经网络
- 线性回归
- 每个输入都与每个输出相连,这种变换称为全连接层(fully-connected layer)或称为稠密层(dense layer)
- softmax回归:输出非负且总和为1
C4 多层感知机
激活函数:ReLU、sigmoid、tanh
模型选择、欠拟合和过拟合
- 对抗过拟合称为正则化(regularization)
- 训练误差、泛化误差
权重衰减 (L2正则化)
Dropout
dropout1, dropout2 = 0.2, 0.5 net = nn.Sequential(nn.Flatten(), nn.Linear(784, 256), nn.ReLU(), # 在第一个全连接层之后添加一个dropout层 nn.Dropout(dropout1), nn.Linear(256, 256), nn.ReLU(), # 在第二个全连接层之后添加一个dropout层 nn.Dropout(dropout2), nn.Linear(256, 10)) def init_weights(m): if type(m) == nn.Linear: nn.init.normal_(m.weight, std=0.01) net.apply(init_weights);
1
2
3
4
5
6
7
8
+ Kaggle实战:预测房价
+ 准备数据
+ ```python
train_data = pd.read_csv(download('kaggle_house_train'))
test_data = pd.read_csv(download('kaggle_house_test'))预处理
# 数值特征缩放到零均值和单位方差来标准化数据 numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index all_features[numeric_features] = all_features[numeric_features].apply( lambda x: (x - x.mean()) / (x.std())) # 缺失值设为0
1
2
3
4
+ ```python
# “Dummy_na=True”将“na”(缺失值)视为有效的特征值,并为其创建指示符特征
all_features = pd.get_dummies(all_features, dummy_na=True)train_features test_features train_labels
转换为张量训练
- 建立模型
- 损失函数取 预测对数与标签对数之间的均方根误差( #在取对数时将小于1的值设置为1进一步稳定该值)
- Adam优化器对初始学习率不敏感
k折交叉验证、模型选择
C5 深度学习计算
- 层和块
- 自定义块、顺序块(
Sequential
类)
- 自定义块、顺序块(
- 参数管理
- 参数访问、参数初始化、参数绑定
- 延后初始化、自定义层
- 读写文件
- 加载和保存张量、加载和保存模型参数
- GPU
C6 卷积神经网络
从全连接层到卷积
- 平移不变性、局部性
图像卷积
填充和步幅
# padding para:高 宽 H*W # stride para:垂直 水平 conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=(0, 1), stride=(3, 4))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
+ 多输入多输出通道
+ 用来扩展卷积层的模型
+ 1x1卷积层(像素上,相当于全连接层)用于调整网络层的通道数量和模型复杂度
+ 池化层
+ 降低卷积层对位置的敏感性,降低对空间降采样表示的敏感性
+ 最大或平均 通常在卷积层后 输出通道数与输入通道数相同
+ ```python
X = torch.arange(16, dtype=torch.float32).reshape((1, 1, 4, 4))
pool2d = nn.MaxPool2d((2, 3), stride=(2, 3), padding=(0, 1))
经典CNN:LeNet
- 卷积激活池化 升维, MLP 降维,softmax输出
现代CNN
- 深度CNN(AlexNet):基于LeNet 模型设计(卷积层 池化层 Dropout ReLU)
使用块的网络VGG
网络中的网络NiN
含并行连结的网络GoogLeNet
# 在通道维度上连结输出 return torch.cat((p1, p2, p3, p4), dim=1)
批量归一化
- 可学习的参数γ和β
- 作用在
- 全连接层和卷积层 输入上
- 全连接层和卷积层输出上 激活函数前
- 全连接层 作用在特征维
- 卷积层 作用在通道维
残差网络(ResNet)
稠密连接网络(DenseNet)
C7 循环神经网络
- 序列模型
- 自回归模型
- 马尔可夫模型
- 潜变量模型
- 文本预处理
- 语言模型和数据集
- N元语法(t=N-1)
- 读取长序列数据
- 随机采样
- 顺序分区
- 循环神经网络
- GRU、LSTM、深层RNN、双向RNN、机器翻译与数据集、序列到序列学习、束搜索
C8 注意力机制
- 注意力分数
- 注意力分数是query和key的相似度;注意力权重是分数的softmax结果
- 常见分数计算:
- 将query和key合并进入一个单隐藏层的MLP
- 直接将query和key做内积
- 使用注意力机制的seq2seq
二 深度学习实践
三 强化学习
Easy RL(basis)
C1 基础
- 序列决策
- 环境有自己的函数更新状态,智能体有自己的函数更新状态,智能体与环境状态等价时,即智能体能够观察到环境所有状态时,则称这个环境是完全可观测的,通常情况下,强化学习被建模成一个马尔可夫决策过程
- 部分可观测马尔可夫决策过程(Partially Observable Markov Decision Processes, POMDP) 是一个马尔可夫决策过程的泛化
- 动作空间
- 强化学习智能体组成成分和类型
- 组成成分
- 策略:随机性策略 / 确定性策略
- 价值函数
- 模型:状态转移概率 + 奖励函数
- 类型
- 基于价值和策略智能体
- 基于价值智能体
- 基于策略智能体
- 行动者-评论员智能体(actor-critic agent)
- 有模型强化学习智能体:通过学习状态转移来采取动作;免模型强化学习智能体:通过学习价值函数和策略函数进行决策
- 基于价值和策略智能体
- 组成成分
C2 马尔可夫决策过程
- 马尔可夫过程
- 马尔可夫性质:是指一个随机过程在给定现在状态及所有过去状态情况下,其未来状态的条件概率分布仅依赖于当前状态(将来的状态与过去状态是条件独立的)
- 离散时间的马尔可夫过程也称为 马尔可夫链
- 马尔可夫奖励过程:马尔可夫链 + 奖励函数
- 回报与价值函数
- 范围horizon:回合长度(每个回合最大时间步数)
- 回报return:奖励的逐步叠加
- 状态价值函数
- 贝尔曼方程
- 回报与价值函数
- 马尔可夫决策过程
- 马尔可夫决策过程中的策略、区别、价值函数、贝尔曼期望方程
- 备份图、策略评估、预测和控制、动态规划、马尔可夫决策过程中的策略评估、马尔可夫决策过程控制、策略迭代、价值迭代、区别
C3 表格型方法
- 马尔可夫决策过程
- 有模型
- 免模型
- Q表格
- 免模型预测
- 蒙特卡洛策略评估:基于采样,使用经验平均回报
- 时序差分 Temporal Difference(TD):Q函数更新方式,使用下一步Q值更新当前Q值
- 免模型控制
- Sarsa 同策略(on-policy)时序差分控制
- Q学习 异策略(off-policy)时序差分控制
- 区别
- Sarsa 同策略(on-policy)时序差分控制
WSS DRL(theory)
C1 Basis
transition:
、 、 、 - 激活函数
- logistic回归 ReLU / 无
- 二分类 sigmoid / tanh
- 多分类 softmax
- 动作随机
、状态转移随机 - 策略函数:
- Return:$${ {\rm{U} }t} = {R_t} + \gamma {R{t + 1} } + {\gamma ^2}{R_{t + 2} } + … = {R_t} + \gamma { {\rm{U} }_{t + 1} }$$
- Action-value function:
- Optimal action-value function:
- State-value function:
C2 价值学习
- 使用nn
近似 # in:s out:a para:w 预测 - TD target - Temporal Difference(TD) Learning
- 观测状态
动作 - 预测 DQN计算
- 求梯度
- 环境提供新状态
和奖励 - 计算TD目标
- 梯度下降
- 降低w来减少loss:
- 降低w来减少loss:
- 观测状态
C3 策略学习
- 策略函数:
概率密度函数(PDF) - 状态价值函数:
- 用policy network
近似策略函数,近似价值函数 - 用policy gradient最大化θ
- 计算策略梯度
- 离散:
= for a in A - 连续:
= 无偏估计/蒙特卡洛近似
- 离散:
- 用policy network
- Policy gradient algorithm
- 观测状态
- 根据policy network 随机采样
- 计算
- 求梯度
- 近似策略梯度$$g({a_t},{\theta t}) = {q_t} \cdot {d{\theta ,t}}$$
- 更新策略网络
- 观测状态
- 近似作价值函数:
- REINFORCE: 遍历整个环境,使
- Actor-Critic
- REINFORCE: 遍历整个环境,使
C4 Actor-Critic (策略-价值)
- 状态价值函数:
- Policy network(actor):nn
近似 - Value network(critic):nn
近似 - 近似
- Policy network(actor):nn
- 训练网络:
- 学习Policy network
增加状态价值;为此学习Value network 更好估计回报 - 更新θ和w步骤
- 观测状态
- 根据policy network 随机采样
- 环境提供新状态
和奖励 - 更新w (价值网络中用TD算法)
- 更新θ (策略网络中用policy gradient算法)
- 观测状态
- Algorithm:
- 观测状态
根据policy network 随机采样 - 执行
环境提供新状态 和奖励 - 根据新状态
随机采样 并不执行 - 计算价值网络
和 - 计算TD error $${\delta t} = {q_t} - ({r_t} + \gamma \cdot {q{t + 1}})$$ 预测和TD target之差
- 价值网络求导
与w.shape相同 - 更新价值网络$${w_{t + 1} } = {w_t} - \alpha \cdot {\delta t} \cdot {d{w,t}}$$
- 策略网络求导
- 更新策略网络$${\theta _{t + 1} } = {\theta t} + \beta \cdot {q_t} \cdot {d{\theta ,t}}$$
- Policy gradient with baseline $${\theta _{t + 1} } = {\theta _t} + \beta \cdot {\delta t} \cdot {d{\theta ,t}}$$
- 观测状态
- 学习Policy network
C5 AlphaGo
C6 Monte Carlo
C7 TD算法
Sarsa (
) Q_learning(
) - 同策略(on-policy)异策略(off-policy)
- 行为策略:控制智能体与环境交互的策略
- 目标策略:强化学习的目标是得到一个策略来控制智能体
- 异策略可使用经验回放
- 同策略(on-policy)异策略(off-policy)
- Title: DRL
- Author: Murphy Lee
- Created at : 2023-02-27 14:09:36
- Updated at : 2023-12-29 15:18:57
- Link: https://redefine.ohevan.com/2023/02/27/DRL/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments