机器学习与深度学习入门
- python基础及高等数学基础。
- 对于基本的数据结构和算法要有一定了解。
- 参考资料:取自于sklearn、tensorflow官方网站、斯坦福大学CS224d、CS231n课件、Github的部分代码仓库、部分来源于网络和搜索引擎,也有部分资料和代码是自行完成的。
- 参考书籍:《机器学习》、《统计学习方法》、《模式识别与机器学习》、《Hands-On Machine Learning With Scikit-Learn & TensorFlow》等。
人工智能概述
智能设备、聊天机器人、无人驾驶、机器人......
什么是人工智能?
人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它试图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。
-
机器人
-
语音识别
-
图像识别
-
自然语言处理
-
专家系统
-
知识工程
-
机器学习
人工智能是对人的意识、思维的信息过程的模拟。人工智能不是人的智能,但能像人那样的思考,甚至超过人的智能。
弱人工智能、强人工智能、超人工智能
-
弱人工智能Artificial Narrow Intelligence(ANI):弱人工智能是擅长于单个方面的人工智能。
-
强人工智能Artificial General Intelligence(AGI):人类级别的人工智能。强人工智能是指在各方面都能喝人类比肩的人工智能,人类能干的脑力活它都能干。
-
超人工智能Artificial Super Intelligence(ASI):知名人工智能思想家Nick Bostrom把超级智能定义为”在几乎所有领域都比最聪明的人类大脑都聪明很多,包括科学创新、通识和社交技能“。
图灵测试
人工智能的历史
-
1956年夏天:达特茅斯会议,提出“人工智能“
-
20世纪60年代:感知机
-
20世纪70年代:专家系统、知识工程
-
20世纪80年代:日本第五代机
-
20世纪90年代:统计机器学习
-
2006年:深度学习
-
2012年:卷积神经网络
机器是否具有真正的智能
目前只能实现感知智能,尚无法实现推理智能
-
计算机无法真正理解符号、数字背后的语义
-
所有的行为都是在“猜”
-
图像、语音:原始信息,感知智能
-
语言、艺术:人工信息,推理智能
学习方法
-
打好机器学习基础
-
学会原理、注重联系
-
动手实践
-
分析数据,提升
准备工作
-
安装anaconda3并配置pycharm
-
安装sklearn/numpy/pandas/matplotlib/xgboost
-
安装pycharm,并设置python解释器路径
-
编写hello,world并成功执行
人工智能中的数学基础
数学分析
-
映射与函数
-
极限
-
导数
导数是曲线的斜率,是曲线变化,快慢的反应;可导一定连续,反之不然
-
常用函数求导公式
泰勒展开式
常用函数的泰勒展开
在某邻域内,存在一阶近似、二阶近似、....逼近非线性函数求解
- 梯度下降法
- 一阶(偏)导数:f'x1(x1,x2...),f'x2(x1,x2...),...,它们的线性加和称为方向导数
线性代数
- 线性变换:指旋转、推移,他们的组合是线性变换
- 矩阵的本质:线性变换!什么情况下矩阵乘法是旋转矩阵
- 仅对角线有非零值的矩阵为缩放矩阵,对角线元素代表了每个维度的缩放强度
- 列向量正交且为单位向量的矩阵,也即正交阵为旋转矩阵
- 分离技术
-> 特征值分解 - 分离技术
-> svd/NFM分解 - 特征值分解 相似矩阵
非常重要且广泛的应用包括:
控制系统
推荐系统
文本相似度处理
图像压缩
行列式
行列式的本质:线性变换的缩放因子,变换是否降维(秩)
矩阵 <==> 线性变换
特征值 <==> 缩放强度
行列式 <==> 缩放强度
概率论
概率与直观
抛掷一枚硬币,抛掷趋于无穷次时,正反面频率一致,根据大数定理
概率的计算
已知A、B独立时
条件概率
全概率公式
贝叶斯公式
小明有8支步枪,其中有5支校准过。校准过的枪支击准靶心的概率为0.8,没有校准过的枪支击准靶心的概率为0.3,现小明随机的选一支枪,结果中靶,问该枪已被校准的概率。
根据贝叶斯公式
重温贝叶斯公式
强调:这是一个非常重要的公式。
期望与方差
E(x)表征了数据的加权平均值,D(x)表征了数据的波动程度
变量的分布
有一类试验,比如抛掷硬币得到正面还是反面,项目成功或失败,产品是否有缺陷,只有两个可能结果。记这两个可能的结果为0和1,该分布就称为伯努利分布。
伯努利分布重复N次,就构成了二项分布。
袋子中有五个标号的小球,每次从中抽取一个,抽取三次,得到的排列方式有多少种呢?
袋子中有五个标号的小球,每次抽取一个,抽取三次,不考虑球之间的顺序,得到的编号组合有多少种呢?
高斯分布,服从中心极限定律,是非常重要的分布。
熵
世界杯比赛有32支球队参加,最少用多少bit信息表示出最后获胜的队伍?
机器学习实践
机器学习基础理论和概念
机器学习主要是研究如何使计算机从给定数据中学习规律,并利用学习到的规律(模型)来对未知或无法观测的数据进行预测。
1548317040116.png-
从学习方式上讲,分为:
-
监督学习
-
无监督学习
-
半监督学习
-
强化学习
-
从学习结果上讲,分为:
-
回归
-
分类
强调:目前主流学习技术是监督学习,半监督学习和强化学习在通用场景下还不是特别的work
机器学习基本方法
项目实战分析
回归与分类
线性回归
-
线性回归是最基础的回归算法
-
通过优化方法设法拟合数据,得到最优的a
评估该模型是否准确,查看训练集上的准确率
评估该模型的泛化性能,在测试集上的准确率
基本概念
-
训练集
-
测试集(交叉验证法、自助法等)
-
目标函数
-
损失函数
-
优化方法
-
拟合、过拟合
-
准确率、泛化性能
目标函数、优化方法推导
不可能有一个理想的线性函数经过所有训练集的数据点,这个问题怎么处理呢?
高斯:“把偏移都看做误差”
这又是一个假设,但是机器学习的套路就是这样的
使用求极值方法求解目标函数
直接采用极值方法求解,有什么缺点?
如果不是拿到所有样本点再求解,仅仅只看
眼前的梯度逐渐求解呢?
使用梯度下降法求解目标函数
-
只根据眼前的路径梯度下降求解的方法,称为随机梯度下降法(SGD)
-
实际上使用样本的过程中,出于效率和稳定性的考虑,我们使用MiniBatch-SGD方法,使用批处理平均来进行梯度更新,而不是对每一个数据都进行一次梯度更新
进一步分析
可以对样本是非线性的,对系数是线性的,polynomial方法
-
准确度评估
对于连续数据(回归问题),一般使用方差评估
-
对于离散数据(分类问题)
accuracy、precision/recall
例:训练样本有100个,正负标记各50个,经过模型分类后,正负样本结果仍为各50个。在正样本中,分对40个,分错10个,负样本中,分对30个,分错20个,则:
accuracy = (100 - 10 - 20) / 100 = 0.7
precision = 40 / 50 = 0.8
recall = 40 / 60 = 0.66
强调:F1越大越好,最大值是1,对于二分类问题,F1=0.5就等价于”胡猜”
训练集上的P、R达到100%,是最好的情况吗?
避免过拟合,引入正则化技术
分别称为LASSO回归、Ridge回归
LASSO具有稀疏作用,Ridge收敛更快
我们说,目标函数仍然是不带正则化的原函数,
经过改造的上式称为损失函数
强调:优化的目标就是让loss最小
-
线性回归是一种回归算法
-
模型简单、计算量较小
-
对误差敏感
-
对数据预处理要求较高
能否使用线性回归解决分类问题呢?
Logistic 回归
logistic回归是最基础的分类算法
回顾伯努利分布,一次实验的结果只有0、1两种选择
根据贝叶斯公式,如果只考虑P(A|B),则称为极大似然估计
以硬币实验为例,现投掷10次,出现正面6次,反面4次
假设硬币正反概率出现的先验分布P(B)均匀,且上述证据P(A)已成定局,则求P(B|A)就是求P(A|B)即似然函数的最大值
logistic回归推导
根据极大似然估计,假设事件发生的概率是p,则最大似然函数为:
引入sigmoid假设:
广义线性模型假设
强调:虽然logistic回归是最基本的分类模型,但它的使用极为广泛,尤其在金融、推荐、商业化等场景中。
-
logistic回归是一种分类算法
-
模型简单、计算量较小
-
对异常数据点并不敏感
-
对数据预处理要求较高
核(kernel)方法,是一种非线性分类器,可以自行查阅svm、kernel相关资料。
决策树
-
决策树能用来做回归,也可以用来做分类,是一类算法的总称
-
决策树是描述对数据进行分类的树形模型,
可以是二叉树或非二叉树,内部节点(绿色)表示
一个特征或属性,叶子节点(橘色)表示一个结果类。
在做回归任务时,以叶子节点的值指代输出值。
- 多种决策树模型,Bagging,Boosting思想
-
信息熵:
表征了信息不确定性的程度,分类属性应当以最高熵减为标准进行
随机森林
-
一棵树比较单薄
-
弱分类器的bagging策略
-
随机森林在bagging策略上作出修改:
(1)、bootstrap采样
(2)、随机选择特征,选择最佳属性建立决策树
(3)、形成随机森林,通过投票得到结果
提升
-
提升是一种机器学习思想,可以用于回归和分类问题,它每一步产生一个弱预测模型,并加权累加至总模型中,如果每一步决策树的生成都是根据损失函数的梯度方向,则称之为梯度提升(Gradient boosting)
-
梯度提升算法首先假设一个损失函数,对于回归可以采用L2 Loss,在这个基础上,通过迭代选择一个负梯度方向上的基分类器来逼近局部最小值
-
考虑利用已有信息,每棵树都在之前的结果上拟合残差
-
使用一阶导得到gbdt(gradient boosting decision tree)、二阶导得到xgboost
强调:GBDT基于的决策树,是一种回归树。同时既不是以ID3、C4.5为方式划分的,也不是以CART方式划分的。它的分割方式是穷举每一个特征分割点,使LSL最小。
xgboost利用了二阶导,并加入了正则化处理
-
决策树是一类具有可解释性、泛化性能较好的模型
-
精度高、无需特征归一化,能够处理缺失值,共线性特征
-
适合于低维稠密数据,不适合高维稀疏数据
-
决策树类算法兼具特征选择能力
-
在金融、推荐、商业化领域用途十分广泛
朴素贝叶斯
切词是自然语言处理中最基础、最重要的工作。切词是否准确,直接影响到文本处理的精确度。由于中文的特殊性,切词精度问题在很长一段时期内无法得到较好的改善。
交集型歧义:结婚的和尚未结婚的
他说的确实在理
组合型歧义:学生会宣传部
把手抬起来
-
词典法
-
规则法
-
语言模型
-
基于隐马尔可夫模型等
-
基于LSTM模型,序列标注
假设有正常/垃圾两类文本的训练数据,上述公式的意思也可以这样表达:
朴素贝叶斯是最基础的文本分类模型,它对文本做了马尔科夫假设
使用朴素贝叶斯对垃圾文本分类
-
朴素贝叶斯是最基础的文本分类模型
-
与常用的概率图模型均有着紧密的关联
-
马尔科夫假设约束较强,该模型能力有限
深度学习简介
传统机器学习通过数据样本采集和人工特征工程,辅之以相对简单的数学模型(如线性回归/logistic回归/决策树/朴素贝叶斯等),实现对数据分布规律的学习或客观世界规律的建模。
- 随着数据量的提升,人工特征工程难以精准
- 模型复杂度有限,表达能力不足
感知机
对生物神经细胞的简单数学模拟,是最简单的人工神经网络,只有一个神经元。感知机也可以看做是线性分类器的一个经典学习算法。
前馈神经网络发展
语音识别的发展
图像领域的发展
nlp领域的发展
强化学习相结合
-
深度学习 ∈ 机器学习
-
深度学习 = 人工神经网络
-
深度学习具备自动特征工程的能力
-
深度学习具备极强的表达能力
-
深度学习计算量庞大
深度学习框架讲解
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。
-
高度的灵活性
-
真正的可移植性(server/mobile)
-
多语言支持(python/c++/Go)
-
常量、变量
-
名称空间
-
操作
-
计算图、任务
涉及的概念:tensor、graph、
constant、variable、operator、
session、initializer、optimizer、
placeholder、device
tf.nn、tf.train、tf.summary
计算机视觉 卷积神经网络
卷积神经网络是一种前馈神经网络。卷积神经网络是受到生物学启发而产生的,它涉及感受野、神经元激活等机制,具有平移、缩放和扭曲不变性,在计算机视觉比赛中达到了超越人类表现的水准。
卷积神经网络组件
- 卷积核
- 池化
- 激活函数
- dropout
- 2012 ImageNet: AlexNet
- 2013 ImageNet: ZFNet
- 2014 ImageNet: VGG
- 2014 ImageNet: GoogleNet
- 2015 ImageNet: Resnet
• cnn 卷积神经网络实现手写数字识别
-
词向量
-
回顾概率语言模型
词是自然语言处理的基础,虽然将自然语言看做是字符序列也能够解决大部分问题,但研究表明,融合了词信息的语言理解准确度更高。
-
传统词向量学习方法:LSA、PLSA等
-
google 2013年末,开源word2vec
采用词袋模型、滑动窗口
cbow/skip-gram
-
词向量训练注意点
语料越大越好、专用领域需对应专用领域语料
词向量长度200左右即可
使用early stop
语义理解 循环神经网络
- 模型需要记忆力
循环神经网络背后的思想是利用顺序信息。在传统的神经网络中,我们假设所有输入都是相互独立的,因此得到MLP、CNN等网络。RNN假定输入是循环的,因此相当于有了记忆功能,在处理序列问题上非常有效。
- lstm(long short-time memory)
lstm是一种特殊的RNN。lstm单元如下图所示,需要注意的是,实际上单层lstm只有一个lstm单元,展开是虚拟的,每一个时间步参数是共享的。不像RNN,lstm有两个隐状态。
- lstm(long short-time memory)
lstm在常见的资料中都非常难以理解,实际上以矩阵的思路去看它并不难。
-
bi-lstm(bidirection long short-time memory)
-
Grid-lstm、Tree-lstm等变种
-
encoder-decoder结构:
文本:机器翻译、文档自动总结、对话系统
图像:图像描述、视觉问答、视觉对话
网友评论