我是靠谱客的博主 寂寞发箍,最近开发中收集的这篇文章主要介绍基于深度学习的聊天机器人参数和超参数搜索Seq2Seq模型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    • 梯度下降法
    • Epoch
    • batchasize
    • iterations
  • 参数和超参数
  • 搜索
  • Seq2Seq模型

梯度下降法

学习率:步长越大则学习率越高
误差函数不断减小。
如果训练数据过多,无法一次性将所有数据送入计算。
故将数据分成几个部分:batch,分多个batch,逐一送入计算训练。

Epoch

一个 epoch(回合) 表示:将全部数据送入神经网络模型中,完成了一次 前向计算 + 反向传播 的(完整训练)过程。

由于一个 epoch 通常太大,所有会分成几个小的 baches。
将所有数据迭代训练一次是不够的,需要反复多次才能拟合、收敛。
在实际训练时,把所有数据分成多个 batch,每次送入一部分数据。
使用单个 epoch 更新权重不够。
随着 epoch 数量的增加,权重更新迭代的次数增多,曲线从最开始的不拟合状态,进入优化拟合状态,最终进入过拟合。
epoch 设置:大小与数据集的多样化程度有关,多样化程度越高,epoch 越大。

batchasize

每个 batch 中:训练样本的数量。
使用训练集中的一小部分数据样本对模型权重进行一次反向传播的参数更新。

batch size 大小选择很重要,最优化网络模型的性能和速度。主要用于批量梯度下降算法中。
批量梯度下降算法是每次迭代都遍历批中所有样本,由批中的样本共同决定最优的方向,batch size 是批中的样本数量。

当数据量较小,计算机可以承载只有一个 batch 的训练方式时,收敛效果会好。
mini-batch:将所有数据分为若干个 batch,每个 batch 包含一部分训练样本。

iterations

完成一次 epoch 需要的 batch 个数。
batch numbers = iterations
分为多少个 batch :数据总数 / batch_size

参数和超参数

参数 和 超参数,是两个相似但本质不同的概念。
超参数是用来确定模型的一些参数,一般根据经验和验证集效果确定的变量,超参数不同,模型不同。
在卷积神经网络中,超参数有 学习速率、迭代次数、层数、每层神经元的个数、批大小及损失函数中各部分的权值等。
参数是可以根据模型自身的算法,通过数据迭代自动学习出的变量,如卷积核的权值 w、偏置 b 等。
如果将卷积神经网络的训练看成多项式拟合问题,那么超参数是最高项次数,参数是各次项的系数。
其中,参数可以用最小二乘法求解,而超参数只能先人工设定,再根据验证集上的效果选取最优。

搜索

exhaustive search(穷举搜索)
最直观的方法,从所有的排列组合里找到输出条件概率最大的序列。
穷举搜索能保证全局最优,但计算复杂度太高,当输出词典稍微大一点就无法使用。

greedy search(贪心搜索)
贪心算法在翻译每个字时,直接选择条件概率最大的候选值为当前最优。
每一步选择中都采取在当前状态下最好或最优的选择,通过这种局部最优策略期望产生全局最优解。
贪心算法本质上没有从整体最优上加以考虑,并不能保证最终结果一定是全局最优。
但是相对穷举搜索,搜索效率大大提升。

beam search(束搜索)
是对 greedy search 的一个改进算法。
相对 greedy search 扩大了搜索空间,但远远不及穷举搜索指数级的搜索空间,是二者的一个折中方案。
beam search 有一个超参数 beam size(束宽),设为 k。
第一个时间步长,选取当前条件概率最大的 k 个词,当作候选输出序列的第一个词。之后的每个时间步长,基于上个步长的输出序列,挑选出所有组合中条件概率最大的 k 个,作为该时间步长下的候选输出序列。始终保持 k 个候选,最后从 k 个候选中挑出最优的。
beam search 不保证全局最优,但是比 greedy search 搜索空间更大,一般结果比 greedy search 要好。
greedy search 可以看作是 beam size = 1 时的beam search。

Seq2Seq模型

是一个Encoder–Decoder 结构的网络,它的输入是一个序列,输出也是一个序列。
Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。

突破了传统的固定大小输入问题框架。采用序列到序列的模型,在NLP中是文本到文本的映射

编码解码器结构
编码器处理输入序列中的每个元素(在这里可能是1个词),将捕获的信息编译成向量(称为上下文内容向量)。
在处理整个输入序列之后,编码器将上下文发送到解码器,解码器逐项开始产生输出序列。

上下文向量
输入的数据(文本序列)中的每个元素(词)通常会被编码成一个稠密的向量,这个过程叫做 word embedding
经过循环神经网络(RNN),将最后一层的隐层输出作为上下文向量。
encoder 和 decoder 都会借助于循环神经网络(RNN)这类特殊的神经网络完成,循环神经网络会接受每个位置(时间点)上的输入,同时经过处理进行信息融合,并可能会在某些位置(时间点)上输出。

Attention机制:对于输入的信息,根据重要程度进行不同权重的加权处理(通常加权的权重来源于softmax后的结果)的机制。

加入 Attention 机制的 Seq2Seq 模型步骤:

  • 带注意力的解码器RNN接收的嵌入(embedding)和一个初始的解码器隐藏状态(hidden state)。
  • RNN处理输入,产生输出和新的隐藏状态向量(h4),输出被摒弃不用。
  • attention的步骤:使用编码器隐藏状态(hidden state)和h4向量来计算该时间步长的上下文向量(C4)。
  • 把h4和C4拼接成一个向量。
  • 把拼接后的向量连接全连接层和softmax完成解码
  • 每个时间点上重复这个操作

最后

以上就是寂寞发箍为你收集整理的基于深度学习的聊天机器人参数和超参数搜索Seq2Seq模型的全部内容,希望文章能够帮你解决基于深度学习的聊天机器人参数和超参数搜索Seq2Seq模型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部