最近又认真的看了一遍Transformer,但是研究的越多,反而也看不清真相了。
为啥这样的一些设计,竟然能让模型记住那么多信息。如今各大厂竞相搞大模型,大搞军备竞赛。可是在竞赛的背后,核心还是Transformer的设计。如此大的训练数据,如此大的参数,Transformer能够完美的记住,包括有自己的意识,俨然一个新的人类。
其实,我一直在想,transformer和人脑有啥区别,为啥会把人脑模仿的的这么好。
整个设计看下来,一些老生常谈的设计,比如残差网络(加强信息记忆),layerNorm(归一化,加速收敛; BatchNorm不可取,考虑到两点,一个是向量的每一维没啥特殊意义,另外就是又PAD MASK的存在,归一化他们的每一维没啥意思);
那新的设计,就是各种Attention,All Attention is you need!对吧。其实看上去是三种attention:
第一种就是Encoder的Self-Attention: 完美的attenion,双向理解 + 并行加速+ 多头点乘,三大特性,加速了对encoder input的理解。
第二种就是Decoder的Masked Attention,其实就是self-attention,无非就是每次在decoder推理每个字的时候,逐次的使用前面的词,后面的词被mask掉,看不到;在某次推理下,能看到的词之间,可见范围内,就是完整的self-attention。
第三种就是Decoder的 Encoder-Decoder Attention, 也是一种self-attention,但是之所以单独归为一种,就是他的K,V是来自Encoder的输入,乘以W得到的。而Q是自己的可见范围内Decoder X得到的,此时就是为了让Decoder看到Encoder的每个词, 建立之间的注意力机制。
另外,就是太多太多的参数, 包括每个字的embedding参数、Position参数、Q、 K、V, linear等每个环节都是各种参数。
总之看来,参数就是记忆细胞,Add & Norm等是加速记忆,有效记忆的操作手段。而Attention就是人的思考,可以通过Attention看到同一句话不同的理解(多头机制), 可以通过attention看到一句话哪些词是需要重点关注的, 通过Attenion可以得到哪些话,是需要反馈给用户的。
为啥这种设计就这么厉害,能够把有效的特征提取到,并且编码进参数里面呢?
无非是: 记忆 -> 有效记忆 -> 注意力 ->理解
可能和人类,整个记忆流程很想把,确实先分配记忆细胞,然后专注记忆力记东西,然后再通过理解输出?
但是我总感觉transfomer的理解可能做的还不够,注意力只是机械的去关注和当前word相关的sentence输出。
真正做到理解,可能还需要再设计下,更巧妙地设计。
不过chatgpt通过大量知识输入,以及大量参数堆积,也产生了类似于意识的东西,说明这个结构也是有效的,产生了意识。
是不是,改下模型结构,就不需要那么大量的知识输入,亦或者是不需要那么大量的参数就能理解很好,亦或是产生意识???