DRL

DRL

Murphy Lee Lv2

路线

数学+python及数据分析基础

ML基础

  • 李航统计

    • 统计信息概论 感知机 K近邻 朴素贝叶斯 决策树 逻辑回归和最大熵 支持向量机 提升树

      EM算法 隐马尔科夫 条件随机场 XGBoost

  • 刘建平:博客 GitHub

ML实战

  • 阿里云天池大赛
  • 工业蒸汽预测 天猫用户重复购买预测 O2O优惠券预测 阿里云安全恶意程序检测
  • 七个步骤:赛题理解、数据探索、特征工程、模型训练、模型验证、特征优化、模型融合

DL基础

  • 李沐(书+视频)

  • Pytorch框架

  • 邱锡鹏

  • NLP:CS224n

    • 课程 (1-5,8,9,11)

    • 作业 (1,2,4,5)

    • 要求:反向传播,词向量,RNN,GRU,Lstm,Seq2Seq以及attention机制 CNN

DL实战

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)时序差分控制
    • 区别

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:
C3 策略学习
  • 策略函数: 概率密度函数(PDF)
  • 状态价值函数:
    • 用policy network 近似策略函数,近似价值函数
    • 用policy gradient最大化θ
    • 计算策略梯度
      • 离散: = for a in A
      • 连续: = 无偏估计/蒙特卡洛近似
  • Policy gradient algorithm
    • 观测状态
    • 根据policy network 随机采样
    • 计算
    • 求梯度
    • 近似策略梯度$$g({a_t},{\theta t}) = {q_t} \cdot {d{\theta ,t}}$$
    • 更新策略网络
  • 近似作价值函数:
    • REINFORCE: 遍历整个环境,使
    • Actor-Critic
C4 Actor-Critic (策略-价值)
  • 状态价值函数:
    • Policy network(actor):nn 近似
    • Value network(critic):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}}$$
C5 AlphaGo
C6 Monte Carlo
C7 TD算法
  • Sarsa ( )

  • Q_learning(

    • 同策略(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