因为最近要深入理解一下transformer,所以逐步做一些笔记。
9月18日
1. 现阶段对transformer的全部认知和理解
对transformer第一次有印象的时候是2020年暑假看李宏毅的深度学习的课程的时候(附上 站链接李宏毅深度学习) 当时李宏毅老师说transformer论文的名字我就惊呆了,Attention Is All You Need. (但是当时因为
- 主观能动性不强也就是积极性不够
- 理解能力也不够,听都听不明白
所以没有选择去深入理解这篇论文和这门技术)
2. 自然语言处理
要讲transformer就绕不过自然语言处理,因为transformer本身就是针对自然语言处理提出的新模型。
自然语言处理例子
那有人就会问了,自然语言需要处理什么呢? 举个最常见的例子,翻译,你看国家了领导会晤或者开国际大会的时候,不是有个翻译人员在,就是耳朵上带一个耳机。 翻译人员和耳机背后的软件本质上都是在做翻译。
实际需求
那也许有人又会问了,有人同时翻译应该更好? 好家伙,我只举一个例子,能够给每一个人配一个翻译么?能够给每个人配上全球这么多国家个地区的翻译? 不太现实对不对。
翻译的本质
此处我问一下,翻译是如何实现的?或者说你在使用英语的时候,是怎么做到将中文快速转换成英语的? 这里就涉及到了我们上学学英语的时候学的单词和语法。其实英语或者说学习外语的本质就是在训练我们在大脑里形成一种映射(也就是对应关系),不仅仅是词级别的映射,更是完整的句子和文章级别,因为只有形成了句子才具有实用性。
但是这个映射关系好学么? 如果只是单词级别的还是挺好学的,尤其是名词,比如说苹果——apple,桌子——desk… 动词也可以比如说跑——run,吃——eat,打——beat。
歧义性
感觉还可以对不对,但是这里其实就有问题,比如说苹果,你说apple的时候,是吃的苹果呢,还是苹果公司的简称呢?这也就是常说的歧义性。 当然了中文里面也是有歧义性的词的,比如说干,如果你说的是干活的干,那就应该是do,但是如果你说的是骂人的时候那个干,是不是应该翻译成fuck好一点呢?
那这个问题应该怎么解决呢? 要根据上下文信息,以干为例,中文是“ 我今天丢了一张发票,损失了50块钱,干”。那么此时,这里就可以翻译成“fuck,I lost a daily invoice and lost 50 yuan”。
映射规则及问题
其实根据刚才那句翻译,这里大家也观察到了,映射关系并不是单词之间的简单对应,还有语法规则再限制这翻译。 那么既然有语法规则,那肯定是可以通过规则来实现翻译 但是这样做有没有问题,肯定有啊,你见过搞计算机的是翻译大师么?或者翻译大师是编程高手么? 也就是说,凡是基于规则的,都要消耗大量的人力和时间去探索规则本身,这个代价是非常大的,而且规则规则,这个行为本身就是带有主观性的,毕竟语法也是人创建的,那再去探索这个过程还是带有主观性的。 结果就是最终探索出来的很可能不全面,甚至会出错。举个例子,平时大家说话都挺遵守语法规则的,那上了大学认识几个山东人之后,你就会发现倒装句可以被他们用的多么出神入化。 正常版:“你今天晚上吃饭了么?” 山东人:“吃饭了么 今天晚上 你”(盗版的山东版啊)
语言的本质
语言的本质是什么,或者说说话本身是一种什么样的行为? 我理解的语言的本质是,在通过主观认知之后,组织的主观性描述语言,来描述一个客观的事物。
回到transformer
所以我也是这么理解transformer的,从整体上来看同时输入encoder 和 decoder 同时输入,最后的整体输出是decoder输入出现的概率是多少。
在这里要解释一下概率,其实在深度学习里面啊,任务呢应该都可以分为两大类(结合数学啊),一类是回归任务,也就是一个x对应一个确定的f(x)。 但是大家想一想,平时你在写作文的时候,你要翻译一句话,你是怎么干的呢?先写出来一个基本版本的,然后再修修改改,肯定会产生几个不同版本的,但是作文肯定只能选一个留下来啊,那我们是怎么办的,选一个最有 ‘可能’ 得高分的句子对不对,所以啊,也就是说,对几个选择,我们对每一个都做了一个评比——得高分的概率,然后选择概率最高的。 翻译也一样啊,你翻译出来大概会有几个版本,不同的人也会翻译出来不同的结果,那老师怎么给分呢?肯定是按照老师喜欢的程度给分对不对,这个本质上也是概率。
总结,今天就先写到这里了,还没有涉及到transformer,只是简单回顾了一下自然语言处理应用场景和基于规则的技术的缺点。
|