Java教程

李宏毅深度学习(七)

本文主要是介绍李宏毅深度学习(七),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Task07 机器学习的下一步(总结)
本次学习基于李宏毅老师的《机器学习》课程:https://www.bilibili.com/video/av59538266
笔记参照Datawhale开源学习笔记:https://datawhalechina.github.io/leeml-notes/#/
本次学习内容较为基础,适合新手了解学习

总结

本次学习为李宏毅老师的《机器学习》部分课程学习,涉及以下几部分内容:

  • 机器学习介绍
    介绍了人工智能、机器学习、深度学习的发展历程及三者间的关系。介绍了机器学习的相关技术:学习情景(scenario)、要解决的问题(task)以及解决问题的方法或模型(method)。
  • 回归
    介绍了回归的定义:找到一个函数 function,通过输入特征 X,输出一个数值Y。模型步骤:step1模型假设(模型)、step2模型评估(策略,损失函数)、step3模型优化(算法,梯度下降)。
  • 误差和梯度下降
    介绍了误差的来源:偏差、方差。偏差过大,也就是欠拟合;方差过大,就是过拟合。为了在偏差和方差之前权衡一个理想的模型,需要做交叉验证。梯度下降:损失函数、学习率、自适应学习率、critical point。
  • 深度学习和反向传播机制
    介绍了深度学习的发展历程。深度学习的步骤:step1神经网络(节点、权重、偏差)、step2模型评估(损失函数,交叉熵)、step3模型优化选择最优函数(梯度下降,反向传播)。
  • 网络设计的技巧
    介绍了Critical Point:Local minima,Saddle point。使用泰勒级数展开损失函数,通过展开式中损失函数对参数的一次导数g和二次导数H,判断是Local minima还是Saddle point。对比了批处理Batch大小对模型精度和计算速度的影响。采用Momentum和自动调整学习率来越过Critical Point,提升计算效率。对比了不同损失函数,对模型寻优也会有很大影响。批标准化Batch Normalization也可以改变损失函数样貌,优化寻优求解过程。
  • 卷积神经网络
    为什么用CNN:简化neural network的架构,用比较少的参数来做影像处理。为什么可以参数少:只需要看图像小部分(Small Region),同样的特征出现在图上不同的部分(Same Patterns),图像压缩不影响判断(Subsampling)。CNN架构:卷积层Convolution(特征提取),池化层Max Pooling(特征压缩),展开层Flatten(给神经网络提供合适输入),全连接层fully connected feedforward netwwork(学习图像、训练参数)。

以Task1中的一幅图来概括整个课程需要学习的内容(本次学习只涉及部分,后续还需要完整学习):
请添加图片描述

最后,假设我们要把机器学习更多应用到生活中,还有哪些问题是需要我们克服的?

1、机器能不能知道“我不知道”

很多时候,你可能训练一个动物识别器,机器知道这是一只猫,正确率可能非常高,真正上线后,输入不仅仅会是一只猫,可能输入一个人图像,这个时候,机器是把这个人硬塞进某一种动物,还是说你的机器有能力知道这个是我不知道的东西。机器会回答这是我不知道的,这样的技术就是Anomaly Detection。
请添加图片描述

2、说出为什么“我知道”

今天我们看到各式各样机器学习非常强大的力量,感觉机器好像非常的聪明,过去有一只马叫做汉斯,它非常的聪明,聪明到甚至可以做数学。举例来说:你跟它讲根号9是多少,它就会敲它的马蹄,大家欢呼道,这是一只会算数学的马。可以解决根号的问题,大家都觉得非常的惊叹。后面就有人怀疑说:难道汉斯真的这么聪明吗?在没有任何的观众的情况下,让汉斯自己去解决一个数学都是题目,这时候它就会一直踏它的马蹄,一直的不停。这是为什么呢?因为它之前学会了观察旁观人的反应,它知道什么时候该停下来。它可能不知道自己在干什么,它也不知道数学是什么,但是踏对了正确的题目就有萝卜吃,它只是看了旁边人的反应得到了正确的答案。

今天我们看到种种机器学习的成果,难道机器真的有那么的聪明吗?会不会它会汉斯一样用了奇怪的方法来得到答案的。

请添加图片描述

这个东西其实是有可能发生的,举例来说,有人做了一个马的辨识器,两个model的辨识率都很高。然后分析,机器是根据什么来标识马的。第一个模型是看到图上黄红部分正常分析出有马,第二个模型是看到下面红色部分,辨识出有马,它只是看到左下角的英文,标识出马,并没有学到马。

请添加图片描述

我们不知道AI有没有那么聪明,我们需要一些技术,让AI不只是做出决定,还要让它告诉我们说它为什么做出这样的决定。

3、机器的错觉

我们知道说,人是有错觉的,比如下面两个圈圈,左边的圈圈颜色比较深,但是人有时会有错觉,觉得右边这个圈圈颜色比较深。

请添加图片描述

机器跟人一样,也很容易被骗,我们可以加一些噪声,让机器本来以为是的后来判断为不是。如本来判断出来是熊喵,加了噪声,就判断错误了。这种就叫做 Adversarial Attack,这个要如何防止呢?即如何防止机器发生错觉。

请添加图片描述

4、终身学习

我们也要机器终生学习。人就是终生学习的,上学期修了线性代数,这学期学机器学习,学好线性代数,机器学习学得更容易。机器能不能跟人一样也做终生学习呢?现在我们一般只让一个模型学习一个任务,比如Alpha Go就只学习下围棋,Alpha star就是玩星海,它们并不是同一个模型。

请添加图片描述

今天我们只让一个模型学习一个人任务,显然会存在如下问题

  • 模型的数量无限增长
  • 之前学到的技能对之后的学习没有帮助

为什么我们今天不让机器去终生学习呢?比如我们先让机器学下围棋,然后再让它学星海,那么尴尬了,学完星海之后它就不会下围棋了。这个叫做Catastrophic Forgetting。如果想让机器做终身学习,还尚在解决的问题

请添加图片描述

5、学习如何学习

过去我们是写一个程序,让机器具有学习的能力,现在我们能不能写一个程序让机器学习具有学习的能力,这个程序能够写出程序让机器具备学习能力,这个技术叫做Meta-Learning 或者 Learn to Learn。学习如何学习,过去我们设定了学习的演算法让机器学习,今天我们能不能让机器自己学习演算法,然后根据这些演算法进行学习。

6、 一定需要很多训练资料吗?

  • Few-shot learning
    让机器看少量的资料,去学会
  • Zero-shot learning
    不给机器任何资料,只告诉机器物品的特征描述,然后机器根据描述进行判断。

7、增强式学习

Reinforcement Learning 真的有这么强吗?当你用Reinforcement Learning 去打一些apari的电玩,Reinforcement Learning也许确实可以跟人做到差不多,但是需要很长时间才能达到,如下图机器需要900多个小时才能达到人类2个小时能达到的效果。机器感觉就是一个天资不佳却勤奋不解的笨小孩,即Reinforcement Learning为什么学得这么慢,有没有办法让它快一点?

请添加图片描述

8、神经网络压缩

假设我们要把机器学习的模型应用到生活当中,device的运算能力有限,内存有限,接下来的问题是我们能不能把Network 架构缩小,让它有同样的能力。首先能不能把一个大的神经网络缩小,减掉多余的神经元;或者能不能把一个神经网络的参数进行二值化,都变成“+1”和“-1”。如果是连续数值,就需要大量的运算和内存,如果把所有参数进行二值化,那么运算起来就快,内存也占用少。
请添加图片描述

9、机器学习的谎言

今天我们在训练的时候,假设训练和测试的数据分布是一样的或者至少非常相似,但是实际上在真实应用里面,这就是一个谎言。

请添加图片描述

如果今天你在做手写数字辨识,训练资料和测试资料非常相似,可能会很容易达到99.5%。但是实际中,可能图片有背景,正确率变成57.5%,直接烂掉了。那么怎么解决机器在训练资料和测试资料不同的场景呢?现有技术有Unsupervised Domain Adaptation。

请添加图片描述

这篇关于李宏毅深度学习(七)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!