现在,让我们打造属于你自己的人工智能吧。
这是只看前一个词的教学用二元,不学习嵌入、注意力或事实。词语分割也是教学示例,不是 分词器。
通向亲手开发的计划
一开始像玩具一样做得小小的,理解原理之后再逐步做大。
1
收集词语
收集你想学习的主题的句子。一开始只有 10 个句子也可以。
2
统计下一个词的次数
制作一张表,记录某个词后面各个词出现了多少次。
3
计算概率分数
统计每种转移,包括句子结束。候选概率等于其次数除以所选词后所有转移的总次数。神经语言模型学习权重,而不只是存储这张小表。
4
比较两种选择方法
比较贪心选择最高概率候选与按概率采样。选到句子结束就停止。采样也可能重复相同结果,生成文本未经事实核查。
5
按自己的标准改进
加入更好的句子、更多的数据和不同的选择规则,把它培养成属于自己的人工智能。
小小的概率计算器
表格显示温度为 1 时的观测频率。温度改变采样概率,不改变计数,也不是事实准确性的控制器。
生成的句子
选择方式并点击再次生成。
前一个词
下一个词
接在后面的次数
后面出现的总次数
概率
起始句子最后一个词后面还没有候选词。
| 前一个词下一个词 | |
|---|---|
词太多了,只显示最先出现的 8 个
核心概念
统计每种转移,包括句子结束。候选概率等于其次数除以所选词后所有转移的总次数。神经语言学习,而不只是存储这张小表。
神经语言从样例中学习数值,生成时用权重和当前上下文计算候选分数。它并非简单查出存储的互联网句子,也不是只统计紧邻前词的次数。
本实验与真正的语言模型对比
| 本实验(二元模型) | 神经语言模型 | |
|---|---|---|
| 看的范围 | 只看前一个词 | 给定的长上下文 |
| 学的是什么 | 接续次数表 | 数值权重 |
| 嵌入与注意力 | 否 | 是 |
| 自己核实事实 | 否 | 否 |