zoukankan      html  css  js  c++  java
  • 台大李宏毅课程学习总结(一)

    这是进入中科院计算所的第一周,周一的时候参加第一次组内学习班,发现自己在机器学习和深度学习方面的基础真的是很薄弱,于是决定认真从头看完台大李宏毅《机器学习与深度学习》课程的完整视频学习。

    所为机器学习,其实可以类比于我们在数学中的函数,在学习函数时,我们会根据自变量与因变量寻找他们之间的函数关系,其实机器学习也是在学习某种函数关系,在“学习”过程中,训练集的数据就帮助我们寻找这样的函数关系,当得到这样的函数关系后,就可以将未知的数据输入,得到预测的结果。这种输入可以有很多,比如音频信息、图像信息、文字信息等等,当然,我们是需要将他们量化的,不过现在先不对具体量化的方法做介绍,之后会有具体的讲解。

    深度学习,其实是机器学习的一个分支,深度学习的历史其实是十分悠久的,早在五六十年代的时候,就开始有了神经网络的萌芽,但是深度学习真正火起来是在二十一世纪之后,这主要得益于两个方面的发展——一个是大数据时代的到来,数据量足够了,我们上面说的那个函数就能够得到足够的信息,精准度就更高了;另一方面则是得益于GPU,因为,是它的出现使我们的计算速度有了质的飞跃,因为我们不可能忍受一个实验要经过数天才能出结果,这样也是不具有可实践性的。

    深度学习其实就是基于神经网络的模型,这是一种end-to-end的学习,这里解释一下:

     深度学习从输入到输出,不仅仅只有一个函数,而是是一个函数接着一个函数的,但是我们不会关注中间的输出到底是怎样的,我们只关注输入和输出,中间部分,神经网络自己会学习出来,这里觉得很神奇吧(不过不需要深究,慢慢就理解了)。

    先从一个神经元说起:

    这里不妨设输入数据是一个向量(x1,x2,......,xn),对于每一个xi,给一个权重wi与之相乘,最后将这些乘积因子相加,再加上一个偏置量bias,就得到了一个值,这个值我们称作z,对值z使用激活函数(例如sigmoid)后,得到我们的输出y,这就是一个神经元的基本结构。

    下面解释两个问题:

    (1)为什么要使用激活函数?

    要知道我们使用的激活函数大多是非线性的。这里要再说明一个问题,就是在深度神经网络中,每一层会有很多神经元,然后还会有很多层,这样,假如使用线性的激活函数,那么其实我们在每一层使用的权重矩阵就没有分开的必要了,因为最终还是会得到一个最终的系数矩阵,因此非线性的处理就可以使处理结果之间不能合并。

    常见的激活函数有:

    sigmoid

    tanh

    relu

    (2)为什么要使用bias?

    bias,称作偏置量,我们拿二分类问题来说,这个量可以代表两个类别的等级关系,因为在现实生活中不可能每一类别的所属数量都是均等的。(大概就是这么理解吧)

    还有一个问题,就是,在深度学习中,我们都是将网络的层数增加,而不是控制层数,在层上加宽,这是为什么呢?

    有实验已经表明,要达到同样的模型准确度,使用较深层的网络使用的参数要比使用较浅网络而增加宽度的参数要少,这样就可以减轻我们计算的负担。

    下面就要说一说怎样刻画模型的“good”与否了:

    需要注意的是,在机器学习中得到的函数关系不可能像数学中学习的那种二次函数、三角函数等等,可以准确无误的对点进行刻画,偏差是会有的,所以我们需要得到最好的拟合关系,这个时候,我们就需要使用到损失函数(这个函数值越小,说明拟合关系越好)

    关于这方面内容,且听下回分解——

  • 相关阅读:
    视图类
    基于前一天再补充
    多表与基表等概念
    模块与序列化
    vue简单实现购物车列表功能
    再顾vue
    再探vue
    iptables编辑
    python 字符串替换、正则查找替换
    Map的遍历
  • 原文地址:https://www.cnblogs.com/kennqiang/p/taidalihongyi_01.html
Copyright © 2011-2022 走看看