6、 GPT-1
BiRNN+Attention使用了典型的编码器-解码器结构,编码器部分使用BiRNN,解码器部分使用Attention机制。对于普通的RNN模型,输入(x_1,x_2,...,x_T) 在经过 T 个时刻之后,可以得到 T 个正向隐藏层状态(h→,...,h→T) ;之后将输入序列单词的顺序颠倒之后得到(x_T,...,x_2,x_1) ,然后再次经过RNN,就可以得到反向的隐藏层状态(h←1,...,h←T) 。最后,我们要得到单词x_j 的向量表示,只需要将正向的隐藏状态h→j 跟反向的隐藏状态h←j 进行连接即可,例如:hj=[h→j;h←j] 。
解码器
在解码器中,作者引入注意力机制。解码器通过如下方式输出目标序列:
对于RNN模型,每一个条件概率通过下式进行建模:
该模型使用的条件概率如下:
需要注意的是,对于每一个目标单词y_i,用来计算其条件概率的上下文向量c_i都是不一样的。这跟传统的编码器-解码器模型是不一样的。c_i 指的就是中间语义变量,作者在论文中称为上下文变量。首先,c_i 依赖于编码器所有的隐藏状态(h_1,...,h_T) ,其次,在双向循环神经网络中,h_i 是包含整个输入序列的信息的,但是其包含的信息更集中在输入序列第 i 个单词位置附近。最后,在翻译输出单词的时候,不同的隐藏状态h_i 对输出序列的贡献是不一样的。
图9. 模型图示,在源句(x_1, x_2, ..., x_T)的基础上生成第t个目标词y_t
编码器( BIDIRECTIONAL RNN FOR ANNOTATING SEQUENCES
一个BiRNN由前向和后向RNN组成。前向RNN→f按顺序读取输入序列(从x_1到x_Tx),并计算出前向隐藏状态的序列(→h_1,..., →h_Tx)。后向RNN←f以相反的顺序读取序列(从x_Tx到x_1),生成一个后向隐藏状态的序列(←h_1, ...,←h_Tx)。我们通过连接前向隐藏状态→h_j和后向隐藏状态←h_j 得到每个词x_j的注释。这样一来,注释h_j就包含了前面的词和后面的词的摘要。由于RNNs倾向于更好地代表最近的输入,注释h_j将集中在x_j周围的词。这一连串的注释被解码器和对齐模型用来计算上下文向量。完整的模型图示见图9。
当前 SOTA!平台收录 GPT-1 共 2 个模型实现资源,支持的主流框架包含 TensorFlow、PyTorch。
项目 | SOTA!平台项目详情页 |
GPT-1 | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/gpt-1 |
前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及API等资源。
网页端访问:在浏览器地址栏输入新版站点地址 sota.jiqizhixin.com ,即可前往「SOTA!模型」平台,查看关注的模型是否有新资源收录。
移动端访问:在微信移动端中搜索服务号名称「机器之心SOTA模型」或 ID 「sotaai」,关注 SOTA!模型服务号,即可通过服务号底部菜单栏使用平台功能,更有最新AI技术、开发资源及社区动态定期推送。