2017-07-30 08:43:54 jiandanjinxin 阅读数 1052

深度学习历史


这里写图片描述


深度学习经典步骤


这里写图片描述

这里写图片描述

这里写图片描述

神经网络的符合标记含义

这里写图片描述

这里写图片描述

Wij 代表的是从神经元j到神经元i,这样写的目的是便于表达,否则最后的表达式子就是Wij的转置,细节见下面。

这里写图片描述

每个神经元的偏执值组成一个向量b

这里写图片描述

单个神经元的输出结果

这里写图片描述

这里写图片描述
这里写图片描述

所有神经元输出的结果

这里写图片描述

这里写图片描述


深度学习示例数字识别


这里写图片描述

这里写图片描述

这里写图片描述

将图片reshape到一列(按行reshape或者按列reshape均可),类别可用0ne-hot来标记。


深度学习损失函数


这里写图片描述

这里写图片描述

这里写图片描述

批量算损失,梯度下降法去更新参数,以便找到最优的目标函数。


深度学习梯度下降法


这里写图片描述

这里写图片描述


参考文献


http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17.html

2018-01-15 23:22:54 sinat_25346307 阅读数 613

视频链接:李宏毅机器学习(2016)_演讲•公开课_科技_bilibili_哔哩哔哩

课程资源:Hung-yi Lee

课程相关PPT已经打包命名好了:链接:pan.baidu.com/s/1c3Jyh6 密码:77u5


我的第五讲笔记:李宏毅机器学习2016 第五讲 逻辑回归

Deep Learning


本章节首先介绍了深度学习的历史,然后较为详细地讲解了深度学习的三大步。


1.深度学习的起起伏伏


深度学习历史

其实在1958年就已经提出了感知机模型,其和上一节所讲的逻辑回归相比,只是最后计算值没有经过sigmoid函数处理。而是通过sgn函数输出结果0或1.

多层感知机模型在80年代就已经提出,很多人会问其和深度学习有什么区别?其实在之前06年RBM受限制玻尔兹曼机模型,如果说初始化用的是RBM就是深度学习,否则就是多层感知机,不过这一想法被否定了,因为人们发现这个RBM并没有那么大用处,就像是“石头汤”里面的石头一样。

GPU的利用极大的提升了深度学习的计算能力。

在12年的时候,深度学习参加ILSVRC图像大赛夺冠,引起了人们的关注。


2.深度学习三大步


深度学习和之前讲的其他机器学习方法没有很大区别,第一步是选择神经网络,第二步是定义函数好坏标准,第三步就是选择一个好的函数。这就像把大象放进冰箱一样简单。

Step1:

不同的连接方式会得到不同神经网络结构,最常见的就是全连接神经网络。


给一个网络结构,就定义了一个函数集;有确切的w和b,就是一个具体的函数。


不同的网络结构

通过矩阵运算以及GPU的并行计算能力能够加速网络的学习。


深度学习明显的优势在于不用手动的去做特征工程,而是可以通过定义网络结构隐藏层等使得网络可以自动提取特征。

常见问题


step2:定义函数好坏标准

损失函数用的是交叉熵函数,对于所有的训练样本,得到损失值,再进行参数更新找到能够使得损失最小的函数。




step3:挑选最佳函数


方法还是用的gradient descent,即使是阿尔法狗都是用的梯度下降。


计算偏导在神经网络中会较为复杂,但是现成有很多库能够帮助我们较快的计算出偏导。

例如TensorFlow、caffe、theano等等。


3.思考


具有一个隐藏层的网络结构就可以表示任意复杂的函数,只要有足够的隐藏单元。

所以,为什么要选择深的网络而不是选择胖的呢?


2019-04-22 16:33:34 weixin_43856715 阅读数 158

一、深度学习三个步骤

1、neural network
2、损失函数
3、优化器

二、各概念关系

机器学习分类:监督学习、半监督学习、无监督学习、强化学习、迁移学习等。
其中,监督学习包括回归和分类,分类又分为线性模型和非线性模型。非线性模型包括深度学习和其他(SVM、决策树、KNN等)。
三、损失函数与梯度更新
损失函数计算预测值与真实值的距离。
梯度更新则寻找使损失函数最小的w值。
在这里插入图片描述
如图所示,对于途中的W0点,计算其梯度结果为负,要使损失函数减少,应使W往增大的方向变化,因此梯度更新一般会在前面加一个负号。
在这里插入图片描述
使w最终的变化方向是增大的。

2019-06-19 22:06:26 wangwei19871103 阅读数 385

目的

通过学习和理解李宏毅的GAN课程,对GAN有更加深入的理解,希望能结合李宏毅老师的课件和自己的理解把GAN的理论基础搞明白,这样就可以去学习更多GAN的变种,同时也可以帮助更多想入门GAN的朋友一点点经验吧。

GAN的理论原理

通俗的讲,GAN中文叫做生成对抗网络,就是双方互相博弈(生成器和鉴别器,鉴别器要最大化,求出分布差异,生成器要最小化,降低差异),最后达到一种平衡状态。我们用GAN做图片生成,做风格学习,做语音识别或者做语音和声纹分离,本质上都是在做概率分布的学习,我们希望我们的模型可以去接近真实分布。

简单的说,就是我希望训练一个模型,模型用来学习真实样本的分布,很多时候我们是不知道真实样本的分布的,但是它确实是存在的。那我们要怎么来学习这个分布呢,最常见的就是用极大似然估计,即我们希望我们的模型生成的样本,看起来很最像是真实的分布生成的样本。换句话说,我们希望模型的样本分布和真实样本分布差距越来越小,因此引入了散度的概念,即两个分布之间的差异,不是距离,应该是信息损耗。这个属于信息论里的概念,有兴趣的可以去了解下[这篇文章],了解下信息量,信息熵,相对熵(KL散度),更好的理解GAN。

在这里插入图片描述
举个生成图片的例子来解释下GAN在做什么。
假设上面中间那个很奇怪的图形是我们真实数据的分布Pdata,简化成二维的这么个图形,上面的每一个点就是一张图片,可以看到左边从图形里面采样到的样本点是很不错,右边从图形外面采样的就比较差了。那我们要做的当然就是去找到这个Pdata啦,希望可以用上面公式来表达。我们是通过很多张样本分析,能知道哪些地方的样本是比较好的,即知道哪里地方出现的好的样本概率高,也知道哪些地方出现差的样本概率高。

极大似然估计

那我们有什么方法通过样本来找出真实数据的分布呢,用的就是极大似然估计,其实也就是估计下,并非帧的能找到,只是极大可能的接近真实分布。

在这里插入图片描述

1.我们有参数θ的分布PG
2.我们想调整参数θ,使得PdataPG越接近越好
3.从真实数据分布Pdata中采样一堆数据x1,x2…,调整参数θ,使得x1,x2…从PG产生的概率越大越好
4.因此就有了关于θ的似然函数
在这里插入图片描述
整体的概率就是每个样本从PG里产生的最大概率的乘积。

我们想让这个L最大,即我们需要找到参数θ,使得L最大,即在这里插入图片描述
一般累乘比较难计算,我们用取log化为累加
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为样本都是取自Pdata,而且求和,我们可以近似转换为期望
在这里插入图片描述
期望对连续随机变量也可以转换为积分问题
在这里插入图片描述
然后为了凑出散度公式,再后面加上了一项
在这里插入图片描述
即如下
在这里插入图片描述
KL散度的公式,可以参考
在这里插入图片描述
由于编辑公式太麻烦,决定手写补上中间的过程,便于理解,字难看了点,能明白过程就行。

在这里插入图片描述
在这里插入图片描述
可以看到,极大似然估计可以变换成KL散度,即两个分布的差异。
我们现在的目标变成求θ,使得两个分部之间差异最小。

生成器G

那现在问题来了,PG怎么来呢,传统的方法是用高斯混合模型的组合而来的,貌似是用很多高斯分部曲线的组合来拟合真实分布,但是貌似对图片效果不好,模糊,所以我们就尝试用神经网络来生成,反正只要能找到一组参数θ,生成PG就行,神经网络刚好擅长这个啊。
在这里插入图片描述
我们可以定义一个噪音分布用于采样,可以是高斯分部,也可以是均匀分布,中间是神经网络,输入样本Z,无论前面是高斯还是均匀分布,都可以被G学习后变为后面的PG分布,我们希望分布PG和真实的分布Pdata越接近越好。所以问题变成我们要找一个G,生成一个分布PG,使得PGPdata越接近越好,可以定义成:
在这里插入图片描述
Div就是两个分布之间的散度(差异),可以是KL散度,也可以是其他的比如JS散度。
简单就是说,为什么的目标等价于要找到一个神经网络G,生成的PG让两个分布之间的差距最小。(有没有发现GAN的核心一直围绕着2个分布之间的差异展开,其他很多的东西都是为这个思想服务,不论前面的最大似然估计,还是后面要讲的交叉熵损失函数都是这个原理)

判别器D

但是问题由来了,我们不知道PGPdata是什么,怎么来衡量他们的差异呢。我们可以采样啊,我们可以通过G去生成样本,就是PG中采样来的,同样,我们也有真实样本,从Pdata采样来的。然后用伸进网络当一个判别器D来解决Div,来判断这些样本的差异情况。
在这里插入图片描述
假设我们采样的样本如下,我们把所有样本给D,训练D为一个二分类器,如果Div大,就给PG低分数,给Pdata高分数,如果Div小,就给这2个差不多分数,直到Div=0时,两个分数就一样了,都为0.5,也说明无法判断样本是哪个分布来的,理论上即达到PGPdata一样了。
在这里插入图片描述
我们固定G,训练D,接下来要为D选择目标函数V(G,D)啦,我们希望来自Pdata的越大越好,来自PG的越小越好,即我们希望整体V(G,D)越大越好
在这里插入图片描述
即我们需要训练个D,使得V(G,D)越大越好
在这里插入图片描述
接下来讲下为什么D和Div相关
在这里插入图片描述

可以看到,如果Div很小,则D就很难鉴别,如果Div很大,D就很容易鉴别,即D和Div是相关的。

我们将刚才的V的期望转换为积分
在这里插入图片描述
即我们需要求这个的最大值,假设 D(x)可以是任意函数,求积分最大,也就是求被积函数最大。在这里插入图片描述
如下假设,可得V最大时候的D取值,就是函数求倒数,等于0,求出D
在这里插入图片描述
之后我们为了凑JS散度做了相应变换,以下为JS散度和KL散度的关系。
在这里插入图片描述
将D的值代入V(G,D)中,凑出JS散度,基本每步都有了,就不手动推导了
在这里插入图片描述
在这里插入图片描述
JS散度和KL散度可以认为是等效的,进过上面的推导,我们得出DivV(G,D)的关系,最大V(G,D),等价于Div
在这里插入图片描述
可以换为

在这里插入图片描述
那现在我们来可视化看一下最大的V(G,D)Div具体的关系:
在这里插入图片描述
假设我们有三个G,可以看到在每个G中,根据上面的的公式,先找到了V(G,D)的最大值和相应的D,因为V(G,D)的最大值,就是散度,可以看到绿色的虚线就是散度的大小,然后我们又需要找到一个最小散度的G,可见G3的散度的是最小的,因此G3就是我们要找的分布差距最小的生成器。

具体求法

在说说上面的公式怎么求吧,G不变,先求出优化的D,然后再求出G,再求出优化的D,再求G,这样无限循环。

因此在求G的时候,D是不变得,所以可以简化为
在这里插入图片描述
然后可以用梯度下降法优化G
在这里插入图片描述
在求梯度的时候会涉及
在这里插入图片描述
这个函数的求导,其实这个是可以求导的,
在这里插入图片描述
上图就是个max的函数,求导时,就是分段求导,x范围内哪个函数大,就用哪个来求导。

在这里插入图片描述
上图为整体算法,我们先生成G0,然后用梯度上升法最大化V(G0,D),和求出相应的D1,然后用梯度下降法最小化V(G,D1),即最小化散度,求出G1,然后继续上面的循环,直到最小化散度为0时候的Gx应该就是最好的生成器啦。

在这里插入图片描述
事实上我们的V(G,D)是换成均值来做的,D就是个二分类器,首先我们训练D,此时G是固定的,我们用梯度上升法训练K次,最大化V(G,D),求出相应的D,然后固定D,用梯度下降法,最小化V(G,D),此时只要求V(G,D)的后半段微分即可,前半段固定了,更新G,这样不断循环,最终使得V(G,D)最大化为0,即分布无差异。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。

Deep learning 学习入门笔记

博文 来自: zygdzt
没有更多推荐了,返回首页