L18
心理学与DL,RL
巴浦洛夫的狗:
消退:词向量需要不断更新
泛化:被蛇咬过,看到绳子也害怕。
过拟合
欠拟合
过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合往往能较好地学习训练集数据的性质,而在测试集上的性能较差。
联结主义:
给一个行为:X-黑箱子-Y
多次重复该行为后,X与Y就有了联结
L19
斯金纳的鼠
操作性条件反射
那么反馈机制很重要:
强化学习的目标函数(李宏毅的PPT):
强化原理:正强化,负强化
reward机制:正惩罚,负惩罚
L20
Pipeline:
Word Segmentation
Spell Correction
Stop Words Removal
Stemming
L21
Word Segmentation
直接调用结巴(结巴底层有多种算法,未公开):
调用add_world(),词库中加入新词
分词工具的底层(算法讲解):
1.最大匹配:Max Matching
希望自己匹配到的单词越长越好
1.1前项最大匹配:
假设有以下词典库。定义参数:max_length=5.
Step1.卡前五个单字窗口,没有则减掉一个单字
【我们经常有】意见分歧
Step2.继续减
【我们经常】
【我们经】
【我们】
Step3.
【我们】作为单独的单词被识别,那么窗口后移
【经常有意见】分歧
…
继续上述操作,
最终得到【我们】【经常】【有】【意见】【分歧】
算法-贪心:选择当前情况下最优local optimal(而不能保证global optimal)
算法-DP: 降低算法复杂度后,可以获得全局最优解
*Beam Search 集束搜索
!自己做编写分词工具练习
1.2后向最大匹配:
我们经常【有意见分歧】
我们经常有【意见分歧】
我们经常有意【见分歧】
我们经常有意见【分歧】
‘’’’’’
我们【经常有意见】
…
我们经常【有意见】
,
【我们经常】
…
有些少数例子里面,前项与后项匹配的分词可能有微小差别。
1.3 双向最大匹配
参考:中文分词引擎 java 实现 — 正向最大、逆向最大、双向最大匹配法
语义层-句子层-单词层(max matching)
L23
考虑语义:Incorporate Semantic (考虑语义)
输入->生成所有可能的分割->选择其中最好的(工具)
最经典的工具:Language Model
经常|有|意见|分歧
经常|有|意见|分歧
经常有|意见分歧
经常|有意见分歧
…
找到多个可能性分割
Unigram Language Model =》每个单词看做是独立存在的单词
P(经常|有|意见|分歧)=P(经常)P(有)P(意见)P(分歧)=0.3
P(经常|有意见|分歧)=P(经常)P(有意见)P(分歧)=0.35
之后返回概率更大的那一项。
书内词语出现的概率 term frequency TF
经常=100次
有=1000次
意见=500次
分歧=200次
P(经常)=100/#of worlds in 书
P(我们|今天|上课)=P(我们)(今天)(上课),可以通过term frequency计算出来
那么这个概率可能会非常非常小 可能是-inf /underflow
logP(经常|有|意见|分歧),加完log后,则可以将乘积拆分成加法,为logP(经常)+logP(有)+logP(意见)+logP(分歧)
为啥可以加上log:因为 如果P(S1)>P(S2),那么一定有logP(S1)>logP(S2)