Appearance
该部分是学习Transformer前置知识, 用于帮助大家快速回顾。详细的机器学习相关的所有内容待博主后续补充更新。
假设我们要完成一个机器翻译任务:把中文句子 “我正在学习机器学习” 翻译成英文 “I am learning machine learning.”
1. Seq2seq 模型
Seq2seq 框架就像一个流水线。
编码器(Encoder) 负责处理输入的中文句子 “我-正在-学习-机器学习”。它会从左到右依次读取每个词,然后把整个句子的信息压缩成一个固定大小的“思想向量”(也叫“上下文向量”)。你可以把它想象成一个“小纸条”,上面写满了关于这句话的所有信息。
解码器(Decoder) 拿到这个“小纸条”,开始生成英文单词。它先生成 “I”,然后根据这个“小纸条”和“I”来预测下一个词 “am”,以此类推,直到生成完整的句子。
存在的问题: 如果中文句子非常长,比如“我今天早上起床后,吃了一个苹果,然后去上班,在路上听到了一个关于机器学习的有趣播客”,这个“小纸条”很难记住所有信息,特别是“早上起床”这样的早期细节可能会被遗忘。
Seq2seq 的广泛应用:
语音辨识:输入声音讯号(一串向量),输出文字序列。
机器翻译:输入一个语言的句子,输出另一个语言的句子。
对话系统:输入一句问话,输出一句回应。
问答系统:输入文章和问题,输出问题的答案。
自动摘要:输入长篇文章,输出精简的摘要。
情感分析:输入一句话,输出“正面”或“负面”。
多标签分类:输入一篇文章,输出多个类别,由机器自己决定输出多少个。
文法剖析:输入一个句子,输出一个文法树。可以通过将文法树结构转换成序列来用 Seq2seq 模型“硬解”(即强行使用)。
物件侦测:可以将图片视为序列,用 Seq2seq 来输出物件的类别和位置信息。
“硬 train 一发”:老师特别用了一个生动形象的例子来阐述 Seq2seq 的强大和“不讲道理”的训练方式。他们用 1500 小时的台语乡土剧资料(台语语音+中文字幕),直接训练了一个模型,不处理背景杂音,也不管字幕是否完美对齐,就让模型学习如何将台语声音直接翻译成中文文字。
成功案例:机器能够成功翻译“你的身体撑不住”或“没事你为什么请假”。
失败案例:机器对于需要倒装的句子(如“我有跟厂长拜托”应翻译成“我拜托厂长”)表现得不太好,这说明模型在处理这类语言关系时仍然有挑战。
Seq2seq 是一个宏观框架,用来完成序列转换任务。
2. Attention (注意力) 机制
Attention 机制是用来解决这个“小纸条”容量有限的问题。它让解码器在翻译时,能更灵活地“回顾”中文句子的每个部分。
- 工作方式: 当解码器要翻译“machine learning”时,它不会只看那个固定大小的“小纸条”,而是会把注意力集中在编码器输入中对应的“机器学习”这几个字上。它会给“机器学习”分配最高的注意力分数,给“我”、“正在”、“学习”等其他词分配较低的分数。最终,它会根据这些分数对所有中文词的表示进行加权求和,得到一个更准确的上下文,从而正确地翻译出“machine learning”。
这就像一个翻译官,在翻译长篇文件时,不会只记住开头的一个总括,而是在翻译每一句话时,都会回头查阅原文中与当前翻译内容最相关的部分。
Attention 是一种改进方法,让 Seq2seq 框架在翻译时能“回头看”源语言句子,解决信息瓶颈。
3. Self-attention (自注意力) 机制
Self-attention 机制更进一步,它不再是编码器和解码器之间的“跨语言”关注,而是在同一个序列内部的关注。
- 工作方式: 假设我们有一个句子 “The cat sat on the mat and it was fluffy.”(猫坐在垫子上,它很蓬松。)
当模型处理到“it”这个词时,自注意力机制会让它同时查看句子中的其他所有词。它会计算“it”和“The cat”、“sat”、“on”、“the mat”等词之间的关系。通过计算,它会发现“it”和“The cat”的关联度最高,因此分配给“The cat”的注意力分数最高。这样,模型就明白,“it”指的就是“The cat”,从而正确地理解整个句子的含义。Self-attention 让模型能够深入理解句子内部的语法和语义关系,比如代词指代、动词的施动者等等,而无需依赖传统的循环结构。
Self-attention 是一个核心组件,用于在单个序列内部“环顾四周”,捕捉每个词与其他词的关系,是 Transformer 模型的“秘密武器”,它使模型能够并行化处理数据,实现更高的效率和性能。
