资讯专栏INFORMATION COLUMN

人工智能期末笔记

CodeSheep / 1124人阅读

摘要:举例,神经元,感知机,神经网络行为主义智能机器人认为人工智能源于控制论。人工智能的研究领域包括专家系统推荐系统等等。是一种实现人工智能的方法根据某些算法,通过大量数据进行训练和学习,然后对真实世界中的事件做出决策和预测。

1. 绪论

四大流派

符号主义(知识图谱)

原理主要为物理符号系统(即符号操作系统)假设和有限合理性原理

用数理逻辑描述智能行为, 在计算机上实现了逻辑演绎系统。

举例,其有代表性的成果为启发式程序LT逻辑理论家,证明了38条数学定理,表了可以应用计算机研究人的思维多成,模拟人类智能活动。

连接主义(神经网络)

认为人工智能源于仿生学,特别是对人脑模型的研究。

举例,MP神经元,感知机,神经网络

行为主义(智能机器人)

认为人工智能源于控制论。早期的研究工作重点是模拟人在控制过程中的智能行为和作用,如对自寻优、自适应、自镇定、自组织和自学习等控制论系统的研究,并进行“控制论动物”的研制。

举例,智能控制和智能机器人

统计主义(机器学习)

基于概率论与数理统计

举例,贝叶斯分类器(条件概率)


AI,ML,DL的异同、关联

知乎

AI最初的概念,是用计算机构造与人类拥有同样智慧的机器。

人工智能的研究领域包括专家系统、CV、NLP、推荐系统等等。

// AI分为弱AI和强AI,
// 弱 AI 让机器通过观察和感知, 做到一定程度的理解和推理
// 强 AI 让机器获得自适应能力, 解决没有遇到过的问题

// 目前的科研工作都集中在弱人工智能这部分,并很有希望在近期取得重大突破
// 电影里的人工智能多半都是在描绘强人工智能,而这部分在目前的现实世界里难以真正实现。

ML 是一种实现人工智能的方法

ML 根据某些算法,通过大量数据进行训练和学习,然后对真实世界中的事件做出决策和预测。

算法:决策树、聚类、贝叶斯分类、支持向量机等等。

学习方法:监督学习(如分类问题)、无监督学习(如聚类问题)、半监督学习、集成学习、深度学习和强化学习。

预处理:特征工程

DL 一种实现机器学习的技术

DL 利用深度神经网络来进行特征表达,DL的学习过程就是DNN的训练过程

DNN 本身并不是一个全新的概念,可大致理解为包含多个隐含层的NN

应用:图像识别、语音识别

预处理:数据清洗

存在的问题

深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理

有些领域,采用传统的简单的机器学习方法,可以很好地解决了,没必要非得用复杂的深度学习方法

深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆自行车之后,再见到哪怕外观完全不同的自行车,小孩也十有八九能做出那是一辆自行车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟


机器学习的两个阶段

训练(三步曲)

define Model

定义 model

goodness of a function

定义Loss function

pick the best function

通过 GD 调整参数,使得损失函数达到最小值,此时的 function 就是某个 Model 中的最佳function

# 所有训练数据用了一次
for e in epoch:
    # 迭代多少次
    for it in iteration:
        GD(batchsize)
        update(W)

# Epoch: 
# All sample data in the train set are used once in 1 epoch
# Iteration (Batch):
#
# Batch-size:
# The number of data in one iteration

误差反向传播, 与GD一起使用, 更新权值, 训练模型

测试

在 Dev set / Test set 上进行测试

前向传播, err = y - predict(x), acc = y - err, 给定输入, 预测输出, 计算准确率


机器学习的分类(区分差异, 举例说明)

监督学习

数据集带标签, 即训练集的 y 已知, 可以计算 err = y - h(x)

举例,线性回归,图像识别

非监督学习

数据集无标签,y 未知,需要通过某种方法自动组织成一个个类别

举例,聚类算法

半监督学习

数据集一部分有标签,一部分没标签

强化学习

强化学习也是使用未标记的数据。

在监督学习中,能直接得到每个输入的对应的输出。强化学习中,训练一段时间后,你才能得到一个延迟的反馈,并且只有一点提示说明你是离答案越来越远还是越来越近。

游戏AI,AlphaGo,Dota,不是马上就能得到游戏结果,但是可以在一段时间延迟后知道自己离胜利是否越来越近。

DeepMind 利用强化学习令游戏 AI 大幅进步,以 AlphaGo 的成功最为典型。

迁移学习

https://blog.csdn.net/jiandan...

从源领域(Source Domain)学习了东西,应用到新的目标领域(Target Domain)

源领域和目标领域之间有区别,有不同的数据分布

样本迁移、特征迁移、模型迁移、关系迁移

训练数据少(容易过拟合),原先某个训练好的模型,部分组件可以重用,部分组件需要修改,用于新的场景,

类似面向对象,可重用性,或者某个web框架可以快速搭建各种web应用

原来识别猫,现在可以识别狗(四条腿的特征可以重用),或者其他动物

训练真实图片,识别卡通图片


线性回归

机器学习定义

机器学习,对于某类任务 T 和性能度量 P,模型程序可以通过经验 E 学习和改进,提升它在任务 T 上的性能 P

T 预测

P 准确率

E 训练集

线性回归

Y = h(x) = WX + b

X(1) = 28x1, Y(1) = 10x1

三步曲

model, loss function, 通过 GD 使 loss 最小

训练集上表现不好 ---> 欠拟合 ---> 使用更复杂的模型,使用更多特征作为输入

训练集表现好 -> 测试集表现不好 --> 过拟合 ---> 正则化,增加训练数据

误差来源分析

Testing Error = Bias error + Variance Error

Bias error ≈ train error = avoidable error + unavoidable error

Variance error ≈ 测试集 上的表现比训练集上差多少

           = test error - train error

欠拟合:bias error 高, variance error 低

过拟合:bias error 低, variance error 高

Good:bias error 低, variance error 低

y5 = W5x^5 + ... + W1x + W0

y1 = W1x + W0, y1 是 y5 的子集

三类数据集

训练集:训练模型参数

开发/验证集:用于挑选超参数

测试集:用于估计泛化误差,衡量模型性能

数据集不是特别大时,使用 K-折 交叉验证

TODO 交叉验证

将数据集D划分成k个大小相似的互斥子集,

每次用k-1个子集作为训练集,余下的子集做测试集,最终返回k个训练结果的平均值。

交叉验证法评估结果的稳定性和保真性很大程度上取决于k的取值。

参数,自动学习,W,b

超参数,某次训练中不会改变的,由程序员确定

lr,正则化系数,模型阶数,batchsize,epoch,梯度优化算法,filter的尺寸、步长

正则化

L1(θ) = L(θ) + λ[θ]1

[θ]1 = |w1| + |w2| + ... 参数绝对值之和,

作用: 特征筛选

L2(θ) = L(θ) + λ[θ]2

[θ]2 = w1^2 + w2^2 + ... 参数平方和

作用:限制模型复杂度, 避免过拟合, 提高泛化能力

Elastic, L1 + L2

L3(θ) = L(θ) + λ{ρ[θ]1 + (1-ρ)[θ]2}

加快模型训练

归一化

使用不同的 GD

SGD, BGD, miniBGD, AdaGrad, RMSProp, SGDM, Adam,

TODO: 不同GD之间的比较

微调学习率lr

TODO: 自适应变化的lr,t++, η--


分类 classification

Why not use linear regression model to solve classification?

线性回归无法解决多分类问题

有些问题不是线性可分的(异或问题)

Why use cross entropy as loss metric, not MSE (Mean Square Error)?

如果是交叉熵,距离target越远,微分值就越大,就可以做到距离target越远,更新参数越快。而平方误差在距离target很远的时候,微分值非常小,会造成移动的速度非常慢,这就是很差的效果了。

离目标离目标很近的时候,∂L/∂w 很小导致更新很慢。

What is Cascading logistic regression model? Why introduce this concept?

https://blog.csdn.net/soulmee...

https://cloud.tencent.com/dev...

串级联的逻辑回归模型可以进行,特征转换,解决非线性的分类,如异或问题

逻辑回归单元就是神经元的基本结构,可以组成神经网络


逻辑回归 vs 线性回归

逻辑

f(x) = σ(Σwx + b)

输出 (0, 1)

Loss = 交叉熵

TODO: 抄公式

https://zhuanlan.zhihu.com/p/...

https://blog.csdn.net/jasonzz...

https://blog.csdn.net/panglin...

线性

f(x) = Σwx + b

输出 任何值

Loss = 均方差

二分类(logistic回归, y = 0 or 1)

sigmoid

多分类(softmax回归, y = 1, 2, 3, ..., k)

softmax


深度学习

对比三步曲

定义一个函数集,即网络结构的选择

goodness of a function, 定义评价函数,即损失函数的选择

https://blog.csdn.net/soulmee...

以识别 MNIST 为例,对于一张图片,计算交叉熵作为 loss

loss = - ln[yi], 其中 i 是正确的标签对应的下标,即 ^yi = 1, 其他 ^y = 0

然后对于一个batch,计算 L = total loss = Σ loss

pick the best function, 挑选一个最好的函数,即如何更新权重进行学习

选择使 L 最小的 function (网络参数),作为最佳 function

枚举是不现实的,神经元个数太多,组合起来数量太大,需要使用梯度下降

w = w - η ∂L/∂w,重复这个过程,直到 ∂L/∂w 很小,即 w 的更新量很小

但是NN是非凸优化的,存在局部最小值

反向传播,用于更新模型参数,

Backpropagation: an efficient way to compute ∂L/∂w in neural network

To compute the gradients efficiently, we use backpropagation.

forward pass: 计算 ∂z/∂w

backward pass 计算 ∂l/∂z = ∂l/∂a ∂a/∂z =

会计算梯度(偏导)

正向传播,用于预测输出,计算loss

全连接

输入层

隐藏层

输出层

梯度消失,梯度爆炸

原因:网络太深,激活函数不合适,如sigmoid

https://zhuanlan.zhihu.com/p/...

只要是sigmoid函数的神经网络都会造成梯度更新的时候极其不稳定,产生梯度消失或者爆炸问题。

靠近输出层的单元的梯度大,学习快,会一下子收敛,认为网络已经收敛了。而靠近输入层的单元梯度小,学习慢,且有随机性。这样整个网络就好像是基于随机情况训练而来的。效果不好。

如果考虑将权重初始化成大一点的值,又可能造成梯度爆炸。

梯度爆炸和梯度消失问题都是因为网络太深,以及网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。

解决方法,可以用新的激活函数 ReLU

解决梯度消失的问题,因为它大于0的部分是线性的。小于0时即为0。

计算量小

https://zhuanlan.zhihu.com/p/25631496

https://zhuanlan.zhihu.com/p/33006526

欠拟合

https://zhuanlan.zhihu.com/p/...

调整网络结构,增加层数、神经元数,但是越深 ≠ 越好

新的激活函数

MiniBatch and Batch Normalization, 提高训练速度和效果

选择合适的损失函数 loss

过拟合

Early Stopping

随着在训练数据上的损失不断减小,在验证集上的误差会在达到某个最小值后反而增大,这时可以考虑提早终止网络的训练,保留一个在训练集和验证集上效果都较好的网络。

正则化

dropout, 以一定的概率丢弃部分单元,简化网络。

更多数据进行训练

创造训练数据,比如手写体识别,图片角度倾斜15度又变成了新的数据


两种特定场景的 NN

CNN, 卷积神经网络

图像识别

提取出图像的不同特征,再搭配全连接网络和softmax进行分类

图像可以用CNN的原因

pattern具有局部性

图像的不同区域可能会出现的同样的pattern

对图像进行向下采样,对整体特征的影响不大,

    卷积层用到a和b两个原因,池化层用到c原因。

    同时,利用这些原理可以减少计算量。

    且,CNN是稀疏连接,且共享参数,大大减少了计算量,

    CNN可以很好地进行特征提取,再搭配全连接网络和softmax进行图像识别(分类)


    由于图像的特征具有局部性、重复性,因此可以通过卷积核进行特征提取

    另外,降低图像分辨率对图像整体特征的影响较小,因此通过池化进行向下取样,减少计算量

    综上,对比全连接,CNN是稀疏连接,且共享参数,大大减少了计算量,又有很好的识别效果

kernel/filter

*    stride

*    padding

*    超参数

    size, padding, stride, number-of-filters

    TODO:结合下面的输入输出尺寸,实例计算尺寸,计算特征

*    输入尺寸 输出尺寸

TODO:CNN结构,P41


RNN, 循环神经网络

TODO,结合上次作业

什么是序列数据?举例说明。

有时间维度的数据称为时间序列数据。如文本段落、语音输入、视频流、DNA序列分析等

RNN 特点

当前的预测值考虑到了之前的运行结果

即使只有一层的RNN模型仍可能出现梯度消失和梯度爆炸,为什么?

https://zhuanlan.zhihu.com/p/...

对RNN进行优化需要用到BPTT,用来表示RNN的记忆状态,权值的偏导中存在累乘,如果每一项都小于1,那么乘多了就变0了,如果每一项都大于1,那么乘多了又会很大,所以RNN存在梯度消失和爆炸的原因。

LSTM与一般的RNN相比,优势在哪。LSTM的结构

可以避免梯度消失(无法消除梯度爆炸)

在LSTM中,也有和RNN一样的记忆单元,叫做细胞状态(LSTM Cell)

从上图可以看到,LSTM的单元状态更新公式中是一个加法而不是乘法

表示以前的记忆需要忘记多少,表示这一次的输入需要添加多少

因为是加法,所以不容易导致接近于0的情况。

LSTM可以保持长时记忆,LSTM的记忆门可以控制记忆存放多久。不过LSTM可以保持长时间记忆根本原因也是因为LSTM解决了梯度消失的问题吧。

训练LSTM相当于是训练每个block的三个门的输入权值

对于给定问题,能判断出是否该使用 RNN 模型

当输入和输出有一个是序列数据时使用RNN模型。

典型RNN任务:语音识别、音乐生成、语义分析、机器翻译。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19943.html

相关文章

  • C语言 指针+二维数组详解 (应付期末、考研的最强笔记,建议收藏)

    摘要:需要注意的是用矩阵形式如行列表示二维数组,是逻辑上的概念,能形象地表示出行列关系。再次强调二维数组名如是指向行的。一维数组名如是指向列元素的。 哈喽!这里是一只派大鑫,不是派大星。本着基础不牢,地动山摇的学习态度,从基础的C语言语法讲到算法再到更高级的语法及框架的学习。更好地让同样热爱编...

    FrozenMap 评论0 收藏0
  • 大学一年之后竟如此。。。开学前的挣扎

    摘要:后来知道有了院赛,学长说刷院和杭电就可,我就一直刷院,到最后比赛前院的前五十道基本做完,杭电也弄了十来道,就这样草草参加比赛了。 博客主页: https://b...

    MartinDai 评论0 收藏0
  • 听说支付宝有一个“疯起来连自己都打”的项目

    摘要:支付宝疯起来连自己都打的项目就是红蓝军技术攻防演练,他们不仅每周进行全栈级别的演练,每年还会举行规模极大的期中考试和期末考试。在支付宝,蓝军从属于蚂蚁金服技术风险部,而红军则包括及各业务部门的技术团队。 摘要: 红军 VS 蓝军,谁是更强者? ​小蚂蚁说: 自古红蓝出CP,在蚂蚁金服就有这样两支相爱相杀的队伍——红军和蓝军。蓝军是进攻方,主要职责是挖掘系统的弱点并发起真实的攻击,俗称...

    trigkit4 评论0 收藏0

发表评论

0条评论

CodeSheep

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<