DeepLearning-Notes
深度学习实战
在深度学习篇中,我们将了解深度学习的历史与理论。深度学习的起点即是所谓的神经网络(Neural Network

NN | 神经网络基础
神经网络层的基本组成成员为神经元,神经元包含两部分,一部分是上一层网络输出和当前网络层参数的一个线性乘积,另外一部分是线性乘积的非线性转换;如果缺少非线性转换,则多层线性乘积可以转化为一层的线性乘积。

$$ \begin{array}{l}{\mathrm{H}(\mathrm{in})=\Sigma=\mathrm{W}{1} \star \mathrm{x}{1}+\mathrm{W}{2} \star \mathrm{x}{2}+\mathrm{W}{3} \star \mathrm{x}{3}+\mathrm{b}} \ {\mathrm{H}(\mathrm{out})=\sigma(\Sigma)}\end{array} $$
一个神经网络结构通常包含输入层,隐藏层,输出层。输入层是我们的 特征(features

相对于浅层网络结构,有两层,三层及以上隐藏层的我们就可以称为深度网络:

在通常的理解中,一个足够宽的网络,是能够拟合任何函数的。而一个深层网络,则能够用更少的参数来拟合该函数,因为深层的神经元可以获取比浅层神经元更复杂的特征表示。
而根据网络层级间不同的反馈方式,我们又可以将其区分为前馈神经网络、反馈神经网络、双向神经网络以及循环神经网络等:
CNN | 卷积网络
前文中提及的神经网络,不同层间的神经元之间两两皆有关联,隐藏层的神经元会和上一层所有的神经元输出相关。和全连接网络相对应的,是只和上一层部分神经元输出连接的网络,如卷积网络。
卷积网络神经元只和上一层的部分神经元输出是连接的,在直觉上,是因为人的视觉神经元触突只对局部信息敏感,而不是全局所有信息都对同一个触突产生等价作用。

同一个卷积核从左到右,从上到下和输入做乘积,得到了不同强度的输出。从直觉上来理解,卷积核对原始数据的不同数据分布的敏感度是不一样的。如果把卷积核理解为是某种模式

一个卷积核是一个模式提取器,多个卷积核就是多个模式提取器。通过多个特征提取器对原始数据做特征提取转换,就构成了一层卷积。

RNN | 循环神经网络

在
LSTM | 长短期记忆网络

在

NLP | 自然语言处理
TextCNN | 文本卷积网络
从直观上理解,

文本卷积与图像卷积的不同之处在于只在文本序列的一个方向做卷积。对句子单词每个可能的窗口做卷积操作得到特征图
$$ \mathrm{c}=\left[\mathrm{c}{1}, \mathrm{c}{2}, \ldots, \mathrm{c}_{\mathrm{n}-\mathrm{h}+1}\right] $$
其中max{c}
作为filter size ∈ {3,4,5}
每个
Transformer
以


-
并行计算
, 提高训练速度。这是相比LSTM 很大的突破,LSTM 在训练的时候, 当前步的计算要依赖于上一步的隐状态, 这是一个连续过程, 每次计算都需要等之前的计算完成才能展开,限制模型并行能力。而Transformer 不用LSTM 结构, Attention 机制的每一步计算只是依赖上一层的输出,并不依赖上一词的信息,因而词与词之间是可以并行的,从而训练时可以并行计算, 提高训练速度。 -
一步到位的全局联系捕捉。顺序计算的过程中信息会丢失,尽管
LSTM 等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM 依旧无能为力。Transformer 使用了Attention 机制,从而将序列中的任意两个位置之间的距离是缩小为1 ,这对解决NLP 中棘手的长期依赖问题是非常有效的。
总结对比
-
CNN:只能看到局部领域,适合图像,因为在图像上抽象更高层信息仅仅需要下一层特征的局部区域,文本的话强在抽取局部特征,因而更适合短文本。
-
RNN:理论上能看到所有历史,适合文本,但是存在梯度消失问题。
-
Self-Attention:相比
RNN 不存在梯度消失问题。对比CNN 更加适合长文本,因为能够看到更远距离的信息,CNN 叠高多层之后可以看到很远的地方,但是CNN 本来需要很多层才能完成的抽象,Self-Attention 在很底层就可以做到,这无疑是非常巨大的优势。
BERT

-
预训练的有效性:这方面来说
BERT 改变了游戏规则,是因为相比设计复杂巧妙的网络结构,在海量无监督数据上预训练得到的BERT 语言表示+ 少量训练数据微调的简单网络模型的实验结果取得了很大的优势。 -
网络深度:基于
DNN 语言模型(NNLM ,CBOW 等) 获取词向量的表示已经在NLP 领域获得很大成功,而BERT 预训练网络基于Transformer 的Encoder ,可以做的很深。 -
双向语言模型:在
BERT 之前,ELMo 和GPT 的主要局限在于标准语言模型是单向的,GPT 使用Transformer 的Decoder 结构,只考虑了上文的信息。ELMo 从左往右的语言模型和从右往左的语言模型其实是独立开来训练的,共享embedding ,将两个方向的LSTM 拼接并不能真正表示上下文,其本质仍是单向的,且多层LSTM 难训练。 -
目标函数:对比语言模型任务只做预测下一个位置的单词,想要训练包含更多信息的语言模型,就需要让语言模型完成更复杂的任务,
BERT 主要完成完形填空和句对预测的任务,即两个loss :一个是Masked Language Model ,另一个是Next Sentence Prediction 。
Nav | 关联导航
About | 关于
Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Acknowledgements
-
Awesome-Lists: 📚 Guide to Galaxy, curated, worthy and up-to-date links/reading list for ITCS-Coding/Algorithm/SoftwareArchitecture/AI. 💫
ITCS- 编程/ 算法/ 软件架构/ 人工智能等领域的文章/ 书籍/ 资料/ 项目链接精选。 -
Awesome-CS-Books
: :books: Awesome CS Books/Series(.pdf by git lfs) Warehouse for Geeks, ProgrammingLanguage, SoftwareEngineering, Web, AI, ServerSideApplication, Infrastructure, FE etc. :dizzy: 优秀计算机科学与技术领域相关的书籍归档。
Copyright & More | 延伸阅读
笔者所有文章遵循知识共享 署名
