概述
这是在学习吴恩达深度学习课程的时候做的笔记,当时是为了完成导师的汇报任务,现在发上来共同学习并保存一下…
结构化机器学习
-
正交化:每次只调试一个参数,保证其他参数不变,从而得到模型某一性能的改变。类似于向量空间内两个向量相互垂直,一个向量调整大小对另一个向量没有影响。
-
机器学习的监督学习中,大致可以分为四个独立“功能”:
-
Fit training set well in cost function
如果表现不好则应使用更复杂的神经网络或使用一些优化算法
-
Fit development set well in cost function
如果表现不好则应正则化或采用更多训练样本
-
Fit test set well in cost function
如果表现不好则应使用更多的验证集样本
-
Performs well in real world
如果表现不好则应该更换验证集或使用新的损失函数
-
-
在构建优化机器学习模型时,单值评价指标很有必要(F1 score等),通过单值评价指标可以很容易判断模型优劣。但是有时候所有性能指标综合在一起构成单值评价指标是比较困难的,因此可以有优化指标和满足指标。
Classifier Accuracy Running Time A 90% 80ms B 92% 90ms C 95% 1500ms 在上表中可以将Accuracy作为优化指标,越优越好;将Running Time作为满足指标,满足设定的阈值即可。
-
划分数据集时原则上应让development set和test set源于同一分布,这样方便对于模型进行统一的评价标准。
-
为了对欠拟合和过拟合进行评判,可以做如下处理:
高bias值表示training set没有适应好,模型欠拟合;高variance值表明dev set和test set在模型上的表现欠佳,模型泛化能力差,模型过拟合。
-
可以对已经建立的模型进行错误分析,通过评估多个影响模型性能的因素各自在错误样本中所占比例来判断其重要性,比例越大,影响越大,月应尽早解决。
-
监督学习中,训练样本有时会出现标记y出错的情况,若这些label标错是随机的,则DL对其包容性较强,若是系统错误则会降低模型性能;若在dev/test集中出现标记错误的情况则需要进行错误分析查看是否需要修正,如果要修正则要对验证集和测试集均修正以保证同分布。
-
若训练集和验证集测试集不是同分布,则无法通过上面提到的bias或variance来判断模型需要修正的点,这时可以从原来的training set中分割出来一部分作为train-dev set,train-dev set与dev set一样都是用于验证
-
迁移学习:把已经训练号的模型的一部分知识(网络结构)直接应用到另一个类似的模型中去
黑线对应预训练,重新训练所有权重系数红线对应微调,通过不断调试来优化 W [ l ] , b [ l ] W^{[l]},b^{[l]} W[l],b[l]
迁移学习适用于:
(1)Task A and Task B have the same input x
(2)You have a lot more data for Task A than Task B
(3)Low level features from Task A could be helpful for learning Task B
-
多任务学习:构建神经网络可以同时执行多个任务。
适用于:
(1)Training on a set of tasks that could benefit from having shared lower-level features
(2)Usually: Amount of data you have for each task is quite similar
(3)Can train a big enough neural network to do well on all the tasks
-
端到端深度学习:将所有不同阶段的数据处理系统或学习系统模块组合在一起,用一个单一的神经网络模型来实现所有的功能,它将所有模块混合在一起,只关心输入和输出。
NLP初了解
-
如何在电脑中表达单词的含义?普遍做法是使用WordNet字典,在WordNet中,名词,动词,形容词和副词各自被组织成一个同义词的网络,每个同义词集合都代表一个基本的语义概念,并且这些集合之间也由各种关系连接。
- WordNet缺点:
- 无法识别单词含义的细微差别
- 无法记录单词的全部含义,无法实时更新
- 主观性强(受WordNet构建者视角影响)
- 需大量人力资源构建
- 无法计算精确的单词相似度
- WordNet缺点:
-
在传统NLP中,常采用one-hot向量来表示单词,每个向量只有一个位置是1,其他位置是0,vector dimension = number of words in vocabulary。
-
One-hot 缺点:
- 语言在不断的发展,词的数量也在不断的增加,最终会得到一个无线的单词空间,单词维度过大,极度稀疏
- 任何两个向量之间都是正交的,无法用于计算单词相似度
-
解决措施:learn to encode similarity in the vectors themselves
-
-
分布式语义(Distributional semantics):一个单词的含义是这个单词常出现的语境所决定。
量化语境:一个单词w的上下文指出现在单词w周围一个固定窗口大小的一组单词
-
Word2vec is a framework for learning word vectors.包括:
-
两种算法:
(1)CBOW:通过上下文预测中心词
(2)skip-gram:通过中心词预测上下文
-
两个训练方法:
(1)negative sampling:抽样负样本
(2)hierarchical softmax:用一种高效的树结构为所有词计算可能性
-
-
Word2vec的思想:
-
我们有一个很大的语料库
-
语料库中的词都可以用一个向量表示
-
遍历文本,对文本中每个位置t,t对应的词称为中心词c,中心词上下文的词称为词o
-
使用词向量c和词向量o的相似性来计算给定c是o出现的概率,即 P ( o ∣ c ) P(o|c) P(o∣c)
-
不断调整词向量来使这个概率最大化
6. Word2vec的目标函数:
对于每个位置t=1…T,计算概率 P ( o ∣ c ) P(o|c) P(o∣c)
L ( θ ) = ∏ t = 1 T ∏ − m ≤ j ≤ m , j ≠ 0 l o g P ( w t + j ∣ w t ; θ ) L(\theta)=\prod_{t=1}^T\prod_{-m\leq j\leq m,j\neq0}logP(w_{t+j}|w_t;\theta) L(θ)=t=1∏T−m≤j≤m,j=0∏logP(wt+j∣wt;θ)
极大似然估计可以得到:
J ( θ ) = − 1 T l o g L ( θ ) = − 1 T ∑ t = 1 T ∑ − m ≤ j ≤ m , j ≠ 0 l o g P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T}logL(\theta)=-\frac{1}{T}\sum_{t=1}^T\sum_{-m\leq j\leq m,j\neq0}logP(w_{t+j}|w_t;\theta) J(θ)=−T1logL(θ)=−T1t=1∑T−m≤j≤m,j=0∑logP(wt+j∣wt;θ)
目标是让 L ( θ ) L(\theta) L(θ)最大化,即让 J ( θ ) J(\theta) J(θ)最小化 -
-
如何计算 P ( w t + j ∣ w t ; θ ) P(w_{t+j}|w_t;\theta) P(wt+j∣wt;θ)?
使用两个向量:对于每个单词,既可能是中心词,也可能是外围词。所有有两个向量。
- V w V_w Vw:当W是中心词时
- U w U_w Uw:当W是外围词时
P ( o ∣ c ) = e x p ( u o T v c ) ∑ w ∈ V e x p ( u w T v c ) P(o|c)=\frac{exp(u_o^Tv_c)}{\sum_{w\in V}exp(u_w^Tv_c)} P(o∣c)=∑w∈Vexp(uwTvc)exp(uoTvc),在此基础上进行梯度下降算法即可。