李弘毅 深度学习_李弘毅深度学习 - CSDN
  • 视频链接:https://www.bilibili.com/video/av9770190/?p=6深度学习分为三部分:定义一系列方程,计算方程的loss,然后选出最好的方程深度学习神经网络类似于人类的大脑的神经网络,每个方程可以看做一个神经元,...

    视频链接:https://www.bilibili.com/video/av9770190/?p=6


    深度学习分为三部分:定义一系列方程,计算方程的loss,然后选出最好的方程


    深度学习神经网络类似于人类的大脑的神经网络,每个方程可以看做一个神经元,不同神经元连接会产生不同结果,在这里我们介绍一下fully connect feedforward network

    1、fully connect feedforward network

    每个神经元都与下一层全部的神经元连接即fully connect,如图所示


    fully connect神经网络结构,由输入、隐藏层和输出组成,每个神经元与下一层神经元全连接


    计算时可以使用矩阵计算,输入向量乘上wight加上bias得出输出,每一层都是这么计算,上一层的输出时下一层的输入,由此直到最后产生输出


    一连串的vector乘上matrix

    举例:手写数字识别


    输入是256维像素代表的向量,输出每个数字的概率



    2、goodness of function



    计算标记与计算值之间的差距,即loss


    减小这个total loss,一个是找一个function,一个是找参数

    方法是gradient descent:


    学习:


    展开全文
  • 李宏毅机器学习系列-深度学习简介深度学习的概况深度学习的步骤前馈神经网络全连接神经网络数字识别分类总结 深度学习的概况 深度学习从2012年的图像识别比赛开始就复苏了,发展越来越快,越来越好,具体他的发展...

    深度学习的概况

    深度学习从2012年的图像识别比赛开始就复苏了,发展越来越快,越来越好,具体他的发展历史可以百度下,可以追溯到很早时期,还有几个大起大落的阶段:
    在这里插入图片描述
    可以看看这些时间点的重要发展:
    在这里插入图片描述

    深度学习的步骤

    那深度学习的步骤是怎么样的呢,其实跟我们前面说的机器学习差不多,就跟把大象放冰箱里的步骤差不多:
    在这里插入图片描述
    我们上次讲到了神经网络就是深度学习的重要部分,是由对个逻辑回归单元组合起来的:
    在这里插入图片描述

    前馈神经网络

    先介绍下这个,其实就是前向传播,从输入计算到输出,输入的是向量,每个向量的每个特征都与后一层的每个神经元相连,通过激活函数计算输入,然后继续往后面的层输入,最后到输出层,是一个向量,比如图上的例子输入是[1,-1],经过第一层的计算后,得到[0.98,0.12],很明显经过了sigmoid的非线性作用:
    在这里插入图片描述
    那我们继续这样计算,知道计算到最后的输出:
    在这里插入图片描述
    那这整一个网络结构就可以看做是一个模型集合,输入是一个向量,输出也是一个向量:
    在这里插入图片描述

    全连接神经网络

    我们来定义下这个网络,输入的向量也看做一层,叫做输入层,最后输出的向量叫输出层,中间的都叫隐藏层,每个层之间的神经网络都是相互连接的,所以叫做全连接神经网络:
    在这里插入图片描述
    所以深度学习的深度可以看做隐藏层的层数很多,所以看上去很深,比如经典的一些模型AlexNet,VGG,GoogleNet:
    在这里插入图片描述
    当然还有残差神经网络Residual Net:
    在这里插入图片描述
    其实神经网络的计算,我们可以用矩阵,这样就可以在GPU上计算,可以大大缩短时间,比如:
    在这里插入图片描述
    上面的值是一层,其实每一层都是这么计算的,计算出的结果向量又作为下一层的输入:
    在这里插入图片描述
    所以输出可以看成一个个sigmoid函数叠起来的结果,有点像递归调用啊:
    在这里插入图片描述
    通常我们把最后的输出层当做多分类器,中间的隐藏层其实就变成了特征提取器了:
    在这里插入图片描述

    数字识别分类

    我们来举一个识别数字的例子:
    我们希望输入一张数字的图片,输出是一个数字:
    在这里插入图片描述
    我们的输入是16x16像素的图,如果是填充颜色的就是1,没有就是0,因此有256个点也就是256个特征输入:
    在这里插入图片描述
    我们的输出是一个10维的向量,每一个维度代表一个数字的概率,取概率最大的为分类的数字,如下,2的概率有0.7,所以这个图片的数字被预测为2:
    在这里插入图片描述
    然后我们需要设计一些隐藏层来组成这个模型:
    在这里插入图片描述
    那么问题来了,隐藏层多少层好呢,每一层的神经元个数多少好呢,这个没有很准确的答案,很多的是根据经验试错和直觉得来的,也就是实际结果得出来的,当然也有让机器自动选择要多少层,另外网络的结构能不能变呢,可以的,可以用CNN或者RNN或者其他的:
    在这里插入图片描述
    接下来要定义模型的好坏了,我们拿真实的预测值和预测的值做交叉熵作为损失函数,为什么不用均方差前面一篇将过了,梯度为0的地方可能是远离最小点的:
    在这里插入图片描述
    于是我们拿很多的样本来进行训练,计算总的损失,我们希望损失越小越好,最小的损失的参数模型就是我们要找的:
    在这里插入图片描述
    那怎么样找出这个损失最小的模型呢,还是我们的梯度下降法:

    在这里插入图片描述
    其实这个过程就是反向传播,具体是用链式法则求导的,也就是一个计算梯度更新参数的过程,当然当参数很复杂的时候我们不可能手动去算,现在有很多的框架,当然下面列的可能是比较老的了,现在一般有keras,pytorch,tensorflow,mxnet等等:
    在这里插入图片描述
    至此,深度学习怎么训练最基本的步骤讲完了。

    总结

    本篇简单介绍了深度学习的基本框架,介绍全连接神经网络的架构,介绍了前向传播和反向传播,其实如果考虑特征空间问题,那么隐藏层在做的是就是把原始的特征空间不断的进行扭曲变形,生成新的特征空间,也就是特征被映射到新的特征空间,就是坐标变换,用来做分类或者回归,而每一层的神经元的个数就是特征空间的维度,维度越高越容易区分。附上思维导图:
    在这里插入图片描述
    好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

    展开全文
  • 台湾李弘毅教授的Deep Learning教程,第一讲1Regression相关的,教程以Pokemon游戏的cp值为样本库进行训练,分析,一步步的改进模型,讲解的很细致,可以给初学者训练AI提供一个思路,且讲解的很清晰透彻,个人觉得...


    台湾李弘毅教授的Deep Learning教程,第一讲1Regression相关的,教程以Pokemon游戏的cp值为样本库进行训练,分析,一步步的改进模型,讲解的很细致,可以给初学者训练AI提供一个思路,且讲解的很清晰透彻,个人觉得他的台湾腔听起来有点像看偶像剧的感觉,不容易分神。

    梯度下降法

    梯度下降法 使损失函数最小化求解权重w
    在这里插入图片描述
    对于含有两个超参数w和b的,梯度下降法 的求解思路。
    在这里插入图片描述
    对于线性回归,损失函数是凸函数,所以不用担心梯度下降求解的过程中会出现局部最优的问题
    在这里插入图片描述

    梯度下降微积分计算步骤:
    在这里插入图片描述

    一次方模型

    y = w * x + b, 一次方模型,针对训练集10个样本的表现结果如下:
    训练集误差31.9
    测试集误差35
    在这里插入图片描述

    二次方模型

    选择二次方模型实验
    y = w2 * x^2 + w1 * x + b,
    针对训练集10个样本的表现结果如下:
    训练集误差15.4
    测试集误差18.4

    在这里插入图片描述

    三次方模型

    选择三次方模型实验
    y = w3 * x^3 + w2 * x^2 + w1 * x + b,
    针对训练集10个样本的表现结果如下:
    训练集误差15.3
    测试集误差18.1

    在这里插入图片描述

    四次方模型

    选择四次方模型实验
    y = w4 * x^4 + w3 * x^3 + w2 * x^2 + w1 * x + b,
    针对训练集10个样本的表现结果如下:
    训练集误差14.9
    测试集误差28.8
    在这里插入图片描述

    五次方模型

    选择五次方模型实验
    y = w5 * x^5 +w4 * x^4 + w3 * x^3 + w2 * x^2 + w1 * x + b,
    针对训练集10个样本的表现结果如下:
    训练集误差12.8
    测试集误差232.1
    在这里插入图片描述

    过拟合

    从下图五个模型的对比可以看出,并不是说模型越复杂,检测的效果越好,效果最好的是三次方的模型,复杂度超过三次方的模型在测试集的误差率反而会过高,这是由于造成了过拟合。
    在这里插入图片描述

    扩充训练集

    扩充训练集,将训练集样本说扩充到60个,来看一下还有什么因素会影响进化后的CP值,根据下图可以分析出 不同的物种可能会导致不同的进化值。为了验证此猜想,我们可以将物种属性加入到模型选择中。
    在这里插入图片描述

    重新设计加入物种信息的模型

    重新设计模型,新的模型加入了物种信息。
    在这里插入图片描述
    在这里插入图片描述

    重新设计加入物种信息的复杂模型

    重新设计加入物种信息的复杂模型,公式采用了二次方,且加入了物体的重量和高度信息。
    在训练集的误差达到了3.8
    测试集的误差为14.3
    在这里插入图片描述

    在这里插入图片描述

    加入正则化

    在这里插入图片描述

    加入正则化后,在lambda =100时,效果最好
    此时训练集误差为4.1,测试集误差为11.1
    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 台大_李宏毅_深度学习&机器学习PPT以及最新PPT下载链接和视频链接 https://www.youtube.com/playlist?list=PLJV_el3uVTsPMxPbjeX7PicgWbY7F8wW9
  • 背景介绍 DL很火,老师大概说了一下它能用的场景,给出了Jeff Dean(2009年当选美国工程院...深度学习的发展史Up and downs of deep learning 里面有些生词: 受限玻尔兹曼机,英文名字是Restricted Boltzma...

    简介

    从DL的历史开始,结合机器学习的三板斧,讲解了FC的前向计算,最后给出了手写数字识别的例子。
    DL很火,老师大概说了一下它能用的场景,给出了Jeff Dean(2009年当选美国工程院院士,2018年 4月3日,出任谷歌旗下搜索与人工智能(AI)业务部门的高级副总裁。)的一张ppt。
    在这里插入图片描述
    图中显示的是DL在谷歌内部的项目数量。
    在线Latex公式

    DL的发展

    • 1958: Perceptron (linear model)
    • 1969: Perceptron has limitation
    • 1980s: Multi-layer perceptron
    • Do not have significant difference from DNN today
    • 1986: Backpropagation
    • Usually more than 3 hidden layers is not helpful
    • 1989: 1 hidden layer is “good enough”, why deep?
    • 2006: RBM initialization (breakthrough),这里RBM相当于换了名字的NN,但是后来证明没啥用
    • 2009: GPU
    • 2011: Start to be popular in speech recognition
    • 2012: win ILSVRC image competition
    里面有些生词:
    受限玻尔兹曼机,英文名字是Restricted Boltzmann Machine,简称RBM。
    https://blog.csdn.net/u013631121/article/details/76652647
    ImageNet Large Scale Visual Recognition Challenge是图像分类领域的比赛,也叫人工智能“世界杯”之称的ImageNet大规模视觉识别挑战赛。

    DL三部曲

    第一步

    在这里插入图片描述

    NN的结构

    到这里接上一节课内容
    Different connection leads to different network structures
    Network parameter 𝜃: all the weights and biases in the “neurons”
    总的来说,一个NN结构就是一个函数空间(function set)参数不一样得到的函数也不一样,不同的函数预测的效果也不一样。下面是要从这个NN结构代表的函数空间中找到一种衡量函数好坏的方法,最终选出最好的function。
    在这里插入图片描述
    不同的连接方式可以得到不同的网络结构,在这个神经网络里面,有一大堆的logistics regression,每个logistics regression都有它们自己的weight和bias,这些weight和bias集合起来就是这个神经网络的参数,记为:θθ
    NN的结构中神经元neurons如何连接是我们自己设计的,最常见的是FC( 全连接前馈网络 Fully Connect Feedforward Network)NN
    在这里插入图片描述
    下面是输入经过第一层计算的结果(这里过了sigmoid函数):
    在这里插入图片描述
    上面0.98的计算是:算z=(11+(-1)(-2)+1)=4,带入σ函数即可。同理可以算出下面的结果:
    在这里插入图片描述
    当然,如果输入不一样,结果也不一样:
    在这里插入图片描述
    当一样NN的结构和参数都定了,就是定了一个function,它的输入和输出都是向量。上面的两个例子可以写为:
    在这里插入图片描述
    确定一个NN结构如果没有定参数就是一组函数(function set)

    可以看到整个网络(包含参数)就是定义了一个function(这里没有复数s),它的输入和输出是向量。
    如果只给出网络结构,没有给参数,就是定义了一个function set。参数当然是要learn出来的咯,不然为什么叫机器学习。
    也就是说第一板斧和机器学习一样,也是决定一个function set,而且这个function set比之前学的linear regression或者logistics regression的function set更加复杂,按老师的说法是涵盖它们的。

    FC小结

    小结一下全连接前馈网络,并讲了神经网络里面的基本概念(输入层,隐藏层,输出层,神经元)

    1. 相邻两层每个neuron之间两两连接
    2. 输入到输出方向是从后向前的。
      在这里插入图片描述
      深度就是指隐藏层很多,现在只要是神经网络都归类于深度学习(隐藏层只有一层也算),上面给出了近几年网络层数的变化。
      坑:152层的神经网络,当然不可能使用全连接的方式,需要使用特殊的连接方式(残差连接),以后会讲。
      在这里插入图片描述

    NN中的矩阵运算

    NN这个结构之所以流行的一个非常重要的原因就是矩阵,在GPU上矩阵运算超快。
    神经网络的计算可以转换为矩阵的操作,把之前的例子进行转换如下图所示:
    在这里插入图片描述
    可以写为:
    在这里插入图片描述
    一般化后,第一层的权重和bias可以集合起来写成w1,b1w^1,b^1,第二层写成w2,b2w^2,b^2,第L层写为:wL,bLw^L,b^L
    输入:x1,x2,...,xNx_1,x_2,...,x_N可以写为XX
    (这里和ng的深度学习课程里面符号用的差不多。)
    可以看到最后的输出y实际上就是矩阵的递归,写成矩阵运算的方式可以方便GPU进行加速。
    在这里插入图片描述
    整个构架可以看做:
    隐藏层:特征提取器,对输入层的特征提取、替换等特征工程操作
    输出层:多分类器,对前面处理好的特征进行分类。这里用的softmax如果不记得可以看上一课笔记。
    在这里插入图片描述

    实例:手写数字识别

    终于不是宝可梦拉。ppt对问题的输入和输出都讲得很清楚,就不多解释了。
    输入:图片看做是向量
    在这里插入图片描述
    输出:
    在这里插入图片描述
    整个构架我们只定下来输入和输出,中间结构啥样还没定。和前面的传统机器学习不一样的是,这里我们需要决定网络的结构(有几个隐藏层,每个隐藏层有几个神经元)。
    决定神经网络结构非常关键,如果网络结构不好,也就意味function set不好,如果function set没有包含好的function,那也没办法从中找到最优解!
    在这里插入图片描述
    如果用FC:
    在这里插入图片描述
    整个FC构架实际上是:A function set containing the candidates for Handwriting Digit Recognition.
    我们需要:decide the network structure to let a good function in your function set.

    FAQ

    那我们如何选择隐藏层的数量,每层神经元的个数?这两个决定了结构,也就决定了function set。
    答案:Trial and Error+Intuition
    DL并没有比机器学习简单,只不过是将原来的问题换一个角度来看,原来传统机器学习会需要花大量的时间来进行特征处理或变换,而在神经网络中则不需要对特征进行特别处理,例如在图像处理的时候一般都直接把图像的像素作为特征直接作为输入层。在神经网络中主要工作在于确定网络的结构。
    究其原因,类似语音识别或图像识别问题,特征自动提取往往比较困难,不如把工作放在确定网络的结构上反而比较容易。
    从大局上来看,如果一个问题(语音识别、图片识别)的特征不好抽取,那我们选择让机器来帮我们抽取,我们只负责来决定如何定义NN模型的结构即可。如果问题的特征(类似NLP中的情感识别,我们手工定义正向词汇和负面词汇就可以获得不错的结果)很明显,那我们可以手工进行特征工程。
    Q: Can the structure be automatically determined?
    E.g. Evolutionary Artificial Neural Networks
    Q: Can we design the network structure?
    Convolutional Neural Network (CNN)

    第二步

    在这里插入图片描述
    这里实际上还是要计算Loss,计算方式和之前上一节中讲的多分类(multi classification)问题是一样的,用的是交叉熵:
    在这里插入图片描述
    我们要调整参数,使得整个交叉熵越小越好。
    也就是对所有的训练数据:
    在这里插入图片描述
    然后累加得到:
    在这里插入图片描述
    然后:
    Find a function in function set that minimizes total loss L.
    或者:Find the network
    parameters θ\theta^∗ that minimize total loss L.
    方法就是梯度下降

    第三步

    在这里插入图片描述
    梯度下降的思路是用损失函数分别对每个参数进行偏导,然后得到梯度,结合学习率,进行参数的更新。这里的梯度下降和前面讲的梯度下降算法过程一样,但是这里的函数复杂一些(神经网络参数多啊)。
    1.参数θθ中包含很多个参数w1,w2,......b1......w_1,w_2,......b_1......,先给它们一个随机初始值;
    2. 接下来计算梯度(也就是每个参数对于total loss L的偏导数(L/w1,L/w2,......L/b1......\partial{L}/\partial w_1,\partial{L}/\partial w_2,......\partial{L}/\partial b_1......)),把所有的偏导(为什么老师叫偏微分-。-)集合起来就是梯度了。
    在这里插入图片描述
    集合起来写成向量形式:
    在这里插入图片描述
    在这里插入图片描述
    最后问题就变成如何计算复杂函数中的偏导,其实就是下一节课的内容(反向传播:backpropagation)老师非常贴心的给出一些已经实现了的库,说在做作业的时候可以直接调用。
    在这里插入图片描述
    另外还给出一个链接:反向传播讲解专题(30mins)
    还没详细看这个链接的内容,大概看了一下,应该是讲得很清楚,就是不知道这个讲解和下节课的内容有什么不一样。

    最后的总(da)结(keng):为什么要深度学习?

    2011年的实验表明,越深(层数越多)error越小(老师原话:performance越好,这里应该不能翻译为性能),究其原因是因为,层数越多,神经网络包含的参数越多,意味着model越复杂,说涵盖的function越多(函数空间越大),bias越小,如果training data足够多,variance可以控制得比较好,因此越deep越好~!
    在这里插入图片描述
    有这么一个已证明的理论:任何连续的函数(输入输出见下图),只要有足够的隐藏层神经元,就可以用一个隐藏层来表示这个函数。
    在这里插入图片描述
    那既然一个隐藏层就可以表达函数了,为什么还要deep learning呢?且听下回分解

    参考资料

    最后给出一些参考资料,都来自大牛:
    Yoshua Bengio(深度学习三巨头之一,18年图灵奖获得者)
    花书
    另外一个,这个貌似有pdf版本,有兴趣的可以自己搜一下:
    Michael Nielsen的神经网络与深度学习入门教程

    展开全文
  • 深度学习3步骤: 1.定义神经网络 2.loss 评价 预测值和真实的测试数据的目标值进行比对,它们的差距就是Loss。一个好的神经网络应该使loss尽可能小。 3.获取最佳的神经网络参数(学习方法) 采用梯度下降算法 ...
  • 李宏毅 深度学习资料

    2020-07-30 23:33:20
    李宏毅大佬的深度学习资料打包整理了!很不错讲的很详细!
  • 多少啊的
  • http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLSD15_2.htmlPowerpoint version of the slides: linkCourse Info pdf (2015/09/18)What is Machine Learning, Deep Learning and Structured Learning?...
  • Training RNN——BPTT 由于RNN和时间序列有关,因此我们不能通过Backpropagation来调参,我们使用的是Backpropagation through time(BPTT) 回顾Backpropagation ...Backpropagation through Time(BPTT) ...
  • 李宏毅学习笔记20.SVM

    2019-07-13 20:37:27
    文章目录前言前情回顾(二分类Binary Classification)approximate的Loss函数square lossSigmoid+Square LossSigmoid + cross entropy(logistic regression)Hinge LossLinear SVMLinear SVM GD计算Linear SVM的另外...
  • 李弘毅机器学习笔记:第七章—深度学习的发展趋势 回顾一下deep learning的历史: 1958: Perceptron (linear model) 1969: Perceptron has limitation 1980s: Multi-layer perceptron Do not have significant ...
  • Backpropagation-反向传播算法 1 前言 1.1 为什么要用 Backpropagation 在神经网络中的梯度下降算法和之前求线性回归方程中用的没有太大的区别,都是不断的计算微分,然后更新参数,最终找到一个最优解。...
  • 李弘毅机器学习笔记

    2020-07-29 14:20:14
    李弘毅机器学习笔记,李弘毅机器学习笔记,李弘毅机器学习笔记。
  • 深度学习过程中,我们会遇到很多问题,并不是所有的问题都是overfitting。 比如下面这个很经典的例子: 这个例子中,随着迭代次数的增加,50-layers的网络在训练集上本身就比20-layers的网络表现差。而在测试...
  • 在上一篇博客逻辑回归基础上已经引出了神经网络(深度学习)的概念,在这篇博客中将进一步介绍时下如日中天的话题——深度学习。 目录 历史回顾 Three Steps for Deep Learning step1 Fully Connect ...
  • 深度学习历史深度学习经典步骤神经网络的符合标记含义Wij 代表的是从神经元j到神经元i,这样写的目的是便于表达,否则最后的表达式子就是Wij的转置,细节见下面。每个神经元的偏执值组成一个向量b单个神经元的...
  • [机器学习入门] 李弘毅机器学习笔记-7 (Brief ...深度学习简介) PDF VIDEOUps and downs of Deep LearningThree Steps for Deep LearningStep 1: Neural NetworkFully Connect Feedforward Network De
  • 深度学习是建立在机器学习之上的, 所以我觉得在开始学习深度学习之前, 牢固学习机器学习十分有必要. 这里主要列一下学习的课程: 吴恩达机器学习 CS229 李弘毅机器学习 莫烦python 简要介绍一下上面的课程: 吴...
  • 高瘦结构引入模块化深度学习使用语音识别举例语音辨识:传统的实现方法:HMM-GMM深度学习的实现方法 DNN两种方法的对比 GMM v.s. DNN普遍性定理举例使用逻辑电路举例使用剪窗花举例使用二位坐标举例端到端的学习...
1 2 3 4 5 ... 11
收藏数 220
精华内容 88
关键字:

李弘毅 深度学习