预览:机器学习基础理论与概念、神经网络与深度学习基础、nlp中的深度学习、语义组合模型、词表示模型
//2019.05.19
一、机器学习基础
1、概念:机器学习是人工智能的一个分支 机器学习是人工智能的一个分支 ,其目的在于使得机器可以进行自动学习,通过算法使得机器能从大量历史数据中学习规律从而对新的样本做决策。主要研究:如何使计算机从给定的数据中学习规律,即从观测数据(样本)中寻找规律,并利用学习到的规律(模型)对未知或无法观测的数据进行预测。目前主流的ML算法是基于统计的方法(统计机器学习)。
*统计思维 vs 规则思维
规则思维:人总结数据/应用的规律,机器应用这些规律、
统计思维:人提供数据,定义任务,机器自动学习数据中的规律(对应具体任务),然后应用规律。
(理解:即在大数据的世界中,让机器取代人脑去寻找规律,为我们自动处理事物)。
2、ML学习方法分类
3、ML学习问题分类
4、ML学习三要素(+自己理解)
模型有线性模型、非线性模型;概率模型、非概率模型
*损失函数和风险函数(均方差、交叉熵)
*经验风险最小化与结构风险最小化(极大似然估计、最大后验概率)
迭代学习(EM),梯度下降法等最优化算法
狭义上,ML就是给定一些训练样本(x,y),x是输入,y是需要预测的目标,让计算机自动寻找一个决策函数f(·)来建立x与y之间的关系,
4、相关术语以及解释
(1)损失函数&风险函数
如何度量错误的程度:
0-1损失函数;平方损失函数;
交叉熵损失函数:
*one-hot向量:将类别变量转换为机器学习算法易于利用的一种形式过程,这个向量的表示为一项属性的特征向量,也就是同一时间只有一个激活点(不为0),这个向量只有一个特征是不为0的,其它都是0,特别稀疏,例如,一个特征“性别”,具有“男”、“女”两个特征值,那么可用one-hot编码,男为10,女为01。
Hinge损失函数
(2)过拟合
--->解决方案:结构风险最小化原则,即在急眼风险最小化的原则上加参数的正则化
(3)学习率
(4)梯度下降法
(5)随机梯度下降法(增量梯度下降):SGD
(6)线性分类
(7)逻辑回归
(8)分类问题、多类分类
(9)开发集(也叫验证集)-->交叉验证
(10)Softmax分类:是逻辑回归的多类推广
(11)评价标准:正确率、准确率、召回率、F值
(12)机器学习工具包:WEKA
*大众化的数据挖掘工作平台,集成了大量能承担数据挖掘任务的机器学习算法,包括数据预处理、分类、回归、聚类、关联分析以及在新的交互式界面上的可视化等等,通过其接口实现自己的数据挖掘算法。
二、神经网络与深度学习基础
1、传统机器学习:人工特征工程+分类器
在大数据环境下的机器学习,自动学习多尺度的特征表示
2、相关模型
(1)感知机:最简单的神经网络,只有一个神经元。
(2)前馈神经网络
(3)反向错误传播
3、深度学习的发展历史
4、常用的深度学习工具包
*TensorFlow:Python工具包,linux环境,可以在任意具备CPU或者GPU的设备上运行
*(Py)Torch:lua工具包
*Caffe:计算CNN先关算法的框架
*Keras:一个极简的和高度模块化的神经网络库
*DyNet:
*MXNet
三、nlp中的深度学习
1、nlp:使用计算机表示和处理自然语言(中的语言单元)
*分类:内容-->类标
*生成:结构-->内容
*匹配:<内容,内容> -->类标(数值)
*翻译:内容-->内容
*结构预测:内容-->结构
2、组合语义原则
一个复杂对象的意义是由其各组成部分的意义以及它们的组合规则来决定的。
3、词的分布表示
*分布假说:上下文相似的词--->词义相似
那么可以根据语义统计获得;相似度可以度量
4、语义组合模型:
基于词、短语等基本语义单元表示句子等更大语义单元的过程
*建模句子的语法/语义信息
|
|
四、语义组合模型(扩展以上内容)
理解:在这一部分,列出了几种神经网络,应该是通过神经网络,将词或句子输入,然后做处理,做到语义组合,那么相应的该模型(及其处理)则为相应的语义组合模型。
(卷积神经网络、循环神经网络、Transformaer和Seq2Seq Learrning)
1、典型语义组合模型:CNN、RNN(递归神经网络和循环神经网络)、Transformer
(1)CNN:是一种前馈神经网络,卷积神经网络是受生物学上的感受野(Receptive Field)机制而提出的,一个神经元的感受野是指特定区域,只有这个区域内的刺激才能激活该神经元。(局部链接、权值共享、采样)具有平移、缩放、扭曲不变性
a)一维卷积
*相关概念
*卷积类型
宽窄是输出相对于原输入!
b)二维卷积
*相关类型
c)其它相关概念
d)CNN在nlp的具体应用(具体怎么去组合语义的)
(具体怎么去理解呢????)
(2)循环神经网络(Recurrent Netural Network,RNN),区别于前馈神经网络(输入输出的维度都是固定的,无法处理变长数据),它使用带自反馈的神经元,能够处理任意长度的序列。
a)应用
b)基于RNN的语言模型
(3)Seq2Seq:Sequence to Sequence Learning
(4)Transformer:Position-wise Feed-Forward Network
*语言模型:目标是计算一个词串的概率!
五、词表示模型
*词是语言处理中最基本的语言单元
*词以及词间关系的表示和建模是NLP任务中重要的基础工作
(1)词表示学习
分布式假设:上下文相似的词-->词义相似
(2)词表示方法
Word2vec模型
(以下解释参考:http://www.cnblogs.com/pinard/p/7160330.html)
一般分为CBOW(Continuous Bag-of-Words 与Skip-Gram两种模型。
CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。比如下面这段话,我们的上下文大小取值为4,特定的这个词是"Learning",也就是我们需要的输出词向量,上下文对应的词有8个,前后各4个,这8个词是我们模型的输入。由于CBOW使用的是词袋模型,因此这8个词都是平等的,也就是不考虑他们和我们关注的词之间的距离大小,只要在我们上下文之内即可。
这样我们这个CBOW的例子里,我们的输入是8个词向量,输出是所有词的softmax概率(训练的目标是期望训练样本特定词对应的softmax概率最大),对应的CBOW神经网络模型输入层有8个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某8个词对应的最可能的输出中心词时,我们可以通过一次DNN前向传播算法并通过softmax激活函数找到概率最大的词对应的神经元即可。
Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。还是上面的例子,我们的上下文大小取值为4, 特定的这个词"Learning"是我们的输入,而这8个上下文词是我们的输出。
这样我们这个Skip-Gram的例子里,我们的输入是特定词, 输出是softmax概率排前8的8个词,对应的Skip-Gram神经网络模型输入层有1个神经元,输出层有词汇表大小个神经元。隐藏层的神经元个数我们可以自己指定。通过DNN的反向传播算法,我们可以求出DNN模型的参数,同时得到所有的词对应的词向量。这样当我们有新的需求,要求出某1个词对应的最可能的8个上下文词时,我们可以通过一次DNN前向传播算法得到概率大小排前8的softmax概率对应的神经元所对应的词即可。
(3)模型改进
(4)技术改进(*归一化方面进行了改进!)
(5)总结
——————————————————
理解:机器学习还有深度学习,目前已经是一个很普遍的工具,在自然语言处理或者是知识图谱方面,目前的工作即是运用这些动作,去处理这方面的数据,得到更多新的东西。所以还是有必要再去学习使用ML和DL!!!