一、总体分析
感觉很多chatbot的博文都是直接拿seq2seq开刀,上来就堆了一堆RNN(或者LSTM,Attention)模型的原理和公式。本篇从初学者的角度出发更想将机器学习基础(目标函数,优化方法,正则化等思想)贯穿始终。并结合Tensorboard可视化tensorflow中相关的模型算法。
在Machine Learning by Mitchell(1997)中,给出了机器学习的一个简洁定义:“对于某类任务 T T 和性能度量
,一个计算机程序被认为可以从经验 E E 中学习是指,通过经验
改进后,它在任务 T T 上由性能度量
衡量的性能有所提升 ”。所以对于我们的非任务导向型的对话系统(chatbot)而言,也可以从这三维度展开讨论。
1.1 任务 T T
机器学习任务定义为机器学习系统应该如何处理样本。样本是指我们从某些希望机器学习系统处理的对象或事件中收集到的已经量化的特征的集合。在上一篇博文中预处理成问答对并用word2vec模型训练后的词向量即是我们chatbot系统的样本数据。机器学习的学习任务有很多种,如分类,回归,转录,机器翻译,异常值检测,密度估计(学习样本采样空间的概率密度函数)等。我们这里的任务大概可以描述为给指定问句生成对答语句。
1.2 性能度量
对于诸如分类,转录之类的任务,通常度量模型的准确率(即模型输出正确结果的样本比例)。回归之类的任务通常用模型输出和样本实际目标值 y y 之间的均方误差 来衡量。对于密度估计类任务,更通常的是评估模型生成的概率密度函数(模型分布 pmodel p m o d e l )和样本实际概率密度函数(经验分布 p̂data