【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用

全文总结于哔哩大学的视频:李宏毅2020机器学习深度学习(完整版)国语

2020版课后作业范例和作业说明在github上:点击此处

李宏毅上传了2020版本的机器学习视频和吴恩达的CS229机器学习相比,中文版本的机器学习显得亲民了许多,李宏毅的机器学习是英文的ppt+中文讲解,非常有利于大家入门。吴恩达的CS229中偏向于传统机器学习(线性回归、逻辑回归、Naive Bayes、决策树、支持向量机等),李宏毅2020版本的机器学习中除了最前面的回归、分类,后面更多篇幅涉及卷积神经网络(CNN)、循环神经网络(RNN)、强化学习(RL)等深度学习的内容。

本博客持续更新,结合哔哩大学的视频观看效果更佳。

下文加粗字体为内容引导标题。

在这里插入图片描述

目录:

Generation、

Attention、

Tips for Generation


一、Generation

我们要产生一个有structured object(结构化对象),对象可以分成很多个组成部分,我们用RNN把这些部分挨个产生出来。例如:一个句子由很多字组成,要产生一个句子,可以用RNN把每个字要一个个产生出来。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第1张图片

假设产生一个中文句子。
下图中的BOS代表句子的起始,这个特别的字符到RNN里后,输出w1的几率是多少,比如得到一个床。再把床丢进去,输出字符是前,前两个输入是w1w2后,第三个同样的几率字符是明,类似一句诗就出来了。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第2张图片

也可以产生一个图片
图片由像素构成,假设有一个3*3个像素的图片。
如下图,图片第一个是blue、第二个是red、第三个四个是yellow、gray,依次。很像一个九个单词的句子。
BOS相当于begin of sentence,output一个red,red丢进RNN产生blue,一次产生各个颜色,就有了图片。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第3张图片
但是这样做感觉有很多瑕疵。

我们是如下图产生的各种颜色。蓝色产生红色,
灰色是由黄色产生,虽然灰色考虑了前面的蓝红黄,但不想要这样的效果。
而是下边的效果。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第4张图片
理想是这样,图片像素间有几何关系。
我们想产生灰色时根据蓝色产生,产生黑色时由红色和灰色。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第5张图片

如下图左上角,我们用这样的方法,先input三组东西,再output三组,再叠起来。

下图中的黑色方框输入到黑色箭头的位置。从下往上三个小正方体是一个lstm,输出给其他的lstm模型。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第6张图片
然后向右推,产生红色。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第7张图片

再从后面产生灰色,黑色框里有蓝色,所以灰色会考虑到蓝色后产生。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第8张图片

其次可以产生视频,产生手写字体。
但是只是用RNN来生成是不够的,因为我们不但要产生一个句子,而且要符合一定的情景。如下图,看到第一个图片要产生一个句子:A young girl is dancing(一个年轻的女孩在跳舞),第二个例子为听到别人说 hello ,要回答:hello,nice to meet you。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第9张图片

那怎么给一个图片,产生一个相关的句子呢?

我们把图片通过设定好的CNN转换成一个向量,把图片向量当成RNN的input丢进去,丢的图片不一样则输出的句子就不一样。为了防止RNN每次的输出忘了这个图片,我们可以在每次RNN时都丢进去一次图片。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第10张图片
类似原理可以用来机器翻译

先把几个汉字丢进绿色的CNN,然后粉色框总结出整个句子的信息,和上面图片一样都转换成向量的模式,再丢尽右边的RNN就完成了翻译的过程。

前半部分把input变成一个向量丢给Generation 的部分就叫做Encoder,后半部分根据code产生句子的部分叫做Decoder。

上边黑体字是一个很重要的结论,Encoder和Decoder是共同训练的,Encoder和Decoder的RNN参数不一样。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第11张图片

二、Attention

接下来是Attention,Attention是一种动态的条件生成。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第12张图片

什么是动态的条件生成?
先看上边的翻译一个句子:Decoder是每次输入的c1、c2、c3都是一个由Encoder生成的向量,都是整个句子的向量。【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第13张图片

而我们要改进的就是,例如在生成machine时我们只需要让他看见 “机器” 两个汉字生成的向量即可。生成learning时只看到 ”学习“两个字生成的向量,这样更准确。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第14张图片

这件事怎么做呢?我们继续用翻译的例子

实现方法就是用attention model,用RNN处理每一个词汇,使其在每个时间点用每一个字用一个向量表示,即h1、h2、h3、h4。
经过一个softmax,四个α的值和为1,得到一个向量c,红色字体为举例,
c = 0.5 h1+ 0.5 h2。
接下来c作为encoder的输出丢给decoder,输出了一个machine。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第15张图片
下边再用z1一样再算一遍,输出为learning
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第16张图片

同样可以用于语音识别(没看懂)
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第17张图片

给图片自动生成标题的应用:
一个图片用一个向量表示的话没法做出标题来,可以用一组向量来描述这个图片。
把每一个小部分的filter取出来,用CNN分别表示。然后和z0运算的到各自的softmax,然后做出这个粉红色的weighted sum,丢到RNN的decoder中去生成z1,再根据z1算z2,依次。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第18张图片
结果可见,第一个图生成的标题为: 一位女士在草地上扔飞盘。
【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第19张图片

以下为transform内容,暂时不看

持续更新本文章

transformer的本意是变形金刚,现在有一个很知名的应用为BERT,BERT全称为Bidirectional Encoder Representation from Transformer,是Google以无监督的方式利用大量无标注文本「炼成」的语言模型。
本博客不涉及BERT,主要介绍transformer。
transformer是Seq2seq model with“Self-attention"的模型。
什么是Seq2seq model模型?先介绍一下。

【李宏毅机器学习】TransFormer框架基础储备知识(p51) 学习笔记 | 全程手码,放心食用_第20张图片

Seq2seq model模型

Seq2seq模型现在已经在机器翻译、文本摘要和图像解释方面取得了很大的成功。谷歌翻译在2016年使用这个模型。Seq2seq模型的输入是序列化数据(比如单词、信件内容、图片特征等),输出也是序列化数据。

你可能感兴趣的:(深度学习,机器学习,人工智能,深度学习,李宏毅,transformer)