| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 基于对话数据关于seq_seq模型的总结 -> 正文阅读 |
|
[人工智能]基于对话数据关于seq_seq模型的总结 |
1.数据介绍: 数据是来自汽车的数据集,是车主和技师的对话数据,主要内容是关于车遇到故障或其它问题的对话内容。我个人理解的任务是,车主的车遇到了问题,然后根据车主和技师之间的对话内容,从中得到摘要内容。也就是最后的摘要答案。 数据处理的时候,需要把所有的问题和对话内容还genju 有一些车的型号,都根据分词后,放到一段文字当中去形成一句话,每个样本都这样去做。对应的样本标签也这样去做。 在处理文本的时候,根据实际情况,将无用的词(比如和实际应用规定的词不相关的词去掉)还有停用词去掉。将不在词表中的词用unk表示。在开头用<start>符号标注,在结尾用<stop>的符号标注。然后将所有样本集合,找到长度最大的那个样本作为最长的句子。然后将所有样本,不足的句子,的结尾用<Pad>补齐。答案标签部分,也是按照这样的处理方法进行。 然后,将所有的样本,根据词向量的索引,转化为对应的数字。之后将样本转化为tensor向量的形式,方便应用于之后的框架运算。 2.模型介绍 encoder部分:将训练的词向量结果,在上面接一个rnn类型的模型,得到最后的输出,一个是隐藏状态(往往可以代表该句的信息),一个是最后的输出(代表的是每个句子中,每个token的语义信息)。 注意力的计算,这里采用的是加性的注意力计算,将decoder的隐藏状态和对应的权重相乘,得到的值。与encoder部分与对应的权重相乘,得到的值进行相加。然后再通过一定的维度变换,将每个样本每个Token上面的分值权重,然后通过softmax转换为概率的形式,将每个token的分值,和对应的编码部分的最终输出,得到encoder和decoder的综合信息。在这里称为context_vector. decoder部分:使用的也是rnn模型,采用的是一个token预测一个token的方式,进行文本内容 的生成。首先也是经过embedding将索引,得到对应的词向量,然后输出。首次通过编码部分得到最后的隐藏状态,作为decoder部分的第一时间步的隐藏状态。将通过注意力计算后得到的context_vector与经过embedding输出得到的部分,相加作为特征的再次融合。然后经过rnn得到最后的输出,再在上面接一个线性变换层,转换到vocab_size的维度。最后将维度上的值,转换为概率。 03 训练部分: train部分,先将batch个样本通过encoder部分,得到对应的语义信息,然后通过teacher教学的方法(每次用标准时间步对应的答案标签,作为每一次新的token的输入)。第一次是定义了起始的token用特殊符号<start>表示,然后通过计算注意力,得到对应的分值,在通过对应的decoder部分,得到对应的分值。当所有的时间步完成之后,将所有的预测值进行stack,通过第一维度,得到输出,最后与标准的标签,计算得到对应的输出。然后将预测的部分和对应的标签部分,通过crossentropy计算损失,在这里有一点注意的是损失位置部分为pad部分,一定要设置为0。所以将标签部分进行mask处理,保证pad部分值为0.最后得到对应的损失。 04 预测 预测的时候,可以通过2种方式。一种是greedy方法,一种是beam search的方法。 greedy方法:每次选择概率最大的那个token,作为预测token。 将分为batch部分的数据,decode从第一个token开始预测,起始token用<start>表示,将编码输出的隐藏层,作为第一次decode的隐藏层。将隐藏层和编码层的最后一层输出,根据注意力机制,计算得到融合编码层语义信息的新的contextvector。然后和decode的最后维度相加。通过rnn,以及最后的线性预测,得到预测维度为词表的概率。从中选择每个样本的概率最大的token,作为预测的token。根据teach force方法,将当前预测出的token作为第二时间步的输入,将隐藏的输出,作为新的输出,之后依次进行预测,直到达到max_len的最大长度结束。然后从中看是否<stop>字符,如果有则选取该字符之前的值。最后将所有生成的数据集集合起来和参考标签计算rouge值。 beam_search方法:指的是每次选择当前样本,然后进行复制到beam_size个。然后按照encoder、decoder的方式进行预测后,得到预测值,从中选则top_k的个数,通过其概率值进行排序,最后将设置值为前几位的token相关的部分,作为假设部分。基于此继续进行预测。每次预测的新的token。得到的概率和之前已经计算过的概率进行加和。每次按照这个流程重复进行,直到达到满足的条件。如达到最大生成长度,或者设定的最大的结果数,则停止。最后从中选择概率最大的那个生成的句子,作为最好的那个句子。 首先将每个样本中的数据,复制为多份(beam_size份),且beam_size==batch的个数。然后计算encoder的值。得到最后的输出和隐藏层的输出。复制beam_size个数的<start>值,作为decode部分的第一次输入,然后根据模型计算注意力和最后的生成的token概率输出。从概率中选择规定前几的token。重新设置新的假设。依次进行直到达到了想要的结果个数或者是最大的生成长度,停止。(还要注意的是,每次的token对用自身的hideen state一定要对应上)。然后从中选择最优的结果作为当前样本的最优生成结果进行返回。所有的样本都生成之后,和对应的标签,计算rounge值。并记录生成的样本到文本中。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 20:28:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |