人工智能期末笔记

栏目: 数据库 · 发布时间: 5年前

1. 绪论

  • 四大流派

    • 符号主义(知识图谱)

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

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

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

    • 连接主义(神经网络)

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

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

    • 行为主义(智能机器人)

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

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

    • 统计主义(机器学习)

      基于概率论与数理统计

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

<br>
  • AI,ML,DL的异同、关联

    知乎

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

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

      // AI分为弱AI和强AI,

      // 弱 AI 让机器通过观察和感知, 做到一定程度的理解和推理

      // 强 AI 让机器获得自适应能力, 解决没有遇到过的问题

      // 目前的科研工作都集中在弱人工智能这部分,并很有希望在近期取得重大突破

      // 电影里的人工智能多半都是在描绘强人工智能,而这部分在目前的现实世界里难以真正实现。

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

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

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

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

      预处理:特征工程

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

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

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

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

      预处理:数据清洗

      存在的问题

      • 深度学习模型需要大量的训练数据,才能展现出神奇的效果,但现实生活中往往会遇到小样本问题,此时深度学习方法无法入手,传统的机器学习方法就可以处理
      • 有些领域,采用传统的简单的机器学习方法,可以很好地解决了,没必要非得用复杂的深度学习方法
      • 深度学习的思想,来源于人脑的启发,但绝不是人脑的模拟,举个例子,给一个三四岁的小孩看一辆自行车之后,再见到哪怕外观完全不同的自行车,小孩也十有八九能做出那是一辆自行车的判断,也就是说,人类的学习过程往往不需要大规模的训练数据,而现在的深度学习方法显然不是对人脑的模拟
<br>
  • 机器学习的两个阶段

    • 训练(三步曲)

      • 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, 给定输入, 预测输出, 计算准确率

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

    • 监督学习

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

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

    • 非监督学习

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

      举例,聚类算法

    • 半监督学习

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

    • 强化学习

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

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

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

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

    • 迁移学习

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

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

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

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

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

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

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

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

<br>

线性回归

  • 机器学习定义

    机器学习,对于某类任务 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++, η--

<br>

分类 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 线性回归

深度学习

  • 对比三步曲

    • 定义一个函数集,即网络结构的选择
    • 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度又变成了新的数据
<br>

两种特定场景的 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任务:语音识别、音乐生成、语义分析、机器翻译。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Design and Analysis of Distributed Algorithms (Wiley Series on P

Design and Analysis of Distributed Algorithms (Wiley Series on P

Nicola Santoro / Wiley-Interscience / 2006-10-27 / USD 140.95

This text is based on a simple and fully reactive computational model that allows for intuitive comprehension and logical designs. The principles and techniques presented can be applied to any distrib......一起来看看 《Design and Analysis of Distributed Algorithms (Wiley Series on P》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码