文章目录
1. 本周学习主要内容
- 主要学习transformer、bert架构算法与计算过程
- 模型部署的一些前端知识
1.1 Transformer和Bert
- 思想
- 结构
1.2 机器学习模型部署
- Flask + 前端
1.3 基于DQN的强化学习算法
- 强化学习
1.4 机器学习特征工程的复习
2. 所遇到问题及代办
- 现在还是感觉学习NLP难度很大,数学流程较为复杂
- 当前最流行的bert应该怎么嵌套到自己的架构中?
- 做一个落地的项目的开发流程不熟悉
- 继续学习时间序列模型与模型部署的方法思路
- 学习数据库,游戏数据集以数据库格式存在
- 许多深度学习架构是基于TensorFlow框架,需要了解一下转为pytorch的方法
3.本周重点
3.1 Transformer基本概念
Transformer是一个利用注意力机制来提高模型训练速度的模型。关于注意力机制可以参看这篇文章,trasnformer可以说是完全基于自注意力机制的一个深度学习模型,因为它适用于并行化计算,和它本身模型的复杂程度导致它在精度和性能上都要高于之前流行的RNN循环神经网络。
是一个黑盒子,当我们在做文本翻译任务是,我输入进去一个中文,经过这个黑盒子之后,输出来翻译过后的英文。
transformer基本机构
3.2 自注意力机制
计算速度上的劣势限制了循环神经网络的应用,特别是在计算比较长的序列的时候,时间的延迟可能对模型的实际应用造成比较大的影响。为了能够增加模型的并行性,同时也方便程序的优化,Google的深度学习研究团队开发了一个新的机制,即自注意力机制(Self-Attention Mechanism),在最新版的PyTorch中也引入了相关的模块,这个模块被称为nn.MultiheadAttn模块。
自注意力机制的基础结构
重要公式
PyTorch中自注意力机制的模块
MultiheadAttention模块参数定义
Transformer单层编码器和解码器模块定义
Transformer编码器、解码器和Transformer模型
3.3 BERT模型
word2vec能够将一个单词转换成单词对应的词向量。但是在很多情况下,单个词向量并不能代表单词的含义。单词的含义在大多数情况下是和上下文相关的,因为在自然语言中存在着大量一词多义的情况。举例来说,在中文中,“出发”这个单词既可以用来表示从一个地点出发,也可以用来表示从一个论据开始推断,而这两个单词的意思显然不同;在英文中,“bank”既可以表示河岸,也可以表示银行。为了区分这些单词,就需要引入上下文单词的词义,从一个句子出发来看单词的具体含义。因此,为了能够克服word2vec算法的缺点,需要引入类似自注意力机制的方法,通过引入当前单词和上下文单词的关系,最后输出某个单词在上下文条件下的向量表示。
BERT模型示意图
BERT模型的词嵌入代码
3.4 强化学习
用深度学习模型来学习质量函数的算法被称为DQN(Deep Q-Network)
质量函数模型代码
DQN是用来解决离散动作空间的强化学习问题的一个有效算法。除DQN这种基于质量函数的强化学习算法外,还有一些基于策略网络的强化学习算法,主要方法是通过构建策略网络来输出每一步最优动作的概率,比如A3C83和SAC84等,比如A3C和SAC
3.5 特征工程
回顾之前学习过的特征衍生与特征选择算法,通过案例巩固之前的学习.