李宏毅机器学习第六周_鱼与熊掌可以兼得的机器学习

目录

摘要

ABSTRACT

一、鱼与熊掌可以兼得吗?

二、回顾ReLU函数与sigmoid函数

一、Piecewise Linear

 三、Deeper is Better?

四、Why we need deep?

五、Analogy-Logic Circuits

 六、Deep Network

总结


摘要

深度神经网络(Deep Neural Networks)通常比浅层神经网络(Shallow Neural Networks)表现更好,原因包括更强的表示能力、局部逐层表示、参数效率、模块化和梯度优化算法。深度模型能学习复杂的抽象特征,通过多层次的非线性映射提高参数效率。局部逐层表示有助于捕捉输入数据的复杂模式。模块化使得网络可以逐层地解决问题,适应输入数据的复杂性。梯度优化算法(如反向传播和随机梯度下降)及现代硬件和软件框架支持了深度学习的实现。

ABSTRACT

Deep Neural Networks typically outperform Shallow Neural Networks due to factors such as stronger representational capacity, local hierarchical representations, parameter efficiency, modularity, and gradient optimization algorithms. Deep models can learn complex abstract features through multilevel nonlinear mappings, increasing parameter efficiency. Local hierarchical representations help capture intricate patterns in input data. Modularity enables networks to address problems layer by layer, adapting to the complexity of input data. Gradient optimization algorithms, such as backpropagation and stochastic gradient descent, along with modern hardware and software frameworks, support the implementation of deep learning.

一、鱼与熊掌可以兼得吗?

我们都知道,一个未知参数很多的function,它理想状况下的loss肯定是比较小的,但是现实上它的loss却比较大,这就导致两者之间的差距较大;然而如果参数较少的function,理想状况下它的loss较大,但是它的现实情况却很接近。那么,有没有一种方法,可以既让loss很小,又可以让理想与现实很接近呢?这就是鱼与熊掌可以兼得的问题。

二、回顾ReLU函数与sigmoid函数

 我们知道,一个Hidden layer可以创造出各种各样的function,如果我们要去表示一个function,它的样子如下图中黑色曲线所示。从图中我们可以发现如果绿色的线段足够多,就可以让绿色的线和黑色的线越来越接近。

一、Piecewise Linear

如下图所示,绿色的piecewise linear可以用一组蓝色的function加上一个常数来表示,利用多个蓝色的function,进行相加,再加上一个常数(piecewise linear的起始点),就可以把这个绿色的线段表示出来,那么如何表示这个蓝色的线段呢?我们可以用两种方式:1、Sigmoid function 2、ReLU function

Sigmoid Function的表达式可以用下图中表达式表示,可以用Sigmoid Function来近似表示这条蓝色的线段。

如下图所示,每一个neuron都可以制造出蓝色阶梯形的线,然后把它们加起来,再加上常数项,就可以产生Piecewise Linear。我们只要有足够多的neuron,我们就可以产生其它任何的Function。

ReLU Function,同理,可以用两条ReLU Function来表示一个蓝色线段,ReLU函数的表达式在前些文章中已经介绍,这里便不再阐述。

假设Network里面的neuron都是ReLU。只要有足够多的ReLU,把它们组合起来,就可以变成Piecewise Linear,这个Piecewise Linear可以逼近任何的Function。

 三、Deeper is Better?

我们可以发现Network越深,错误率越低。当我们把Network越叠越深时,H就会越来越大,理想的Loss会越来越低。那么越深的Network越好吗?难道我不把Network叠的很深,我只是横向增多neuron难道不行吗?下面就让我们来探讨一下!

 经过研究我们发现,当未知参数一样的时候,5*2k与1*3772的参数量一样,但是我们可以发现,越深的network,它的错误率越低,这是巧合吗?从图中,我们可以对比很多批数据,就算是2层network,就有2k个neuron,都比1*16k的错误率更低,这也就说明了高瘦的network,不需要很多训练数据,便可以得到较低的错误率。

四、Why we need deep?

一个hidden layer当然可以表示任意的function,但是呢,我们发现,使用更深的network会表现的更好,会更有效。

五、Analogy-Logic Circuits

E.g:parity check

输入是由0、1组成的串,如果这个串中1出现的次数是奇数,就输出0;反之,就输出1。

我们当然可以用两个Circuit来表示所有可能的情况,但是在电路中很少这么用,而是用下边这种方式:

 六、Deep Network

如下图所示,首先用一层结构,两层神经元,激活函数用ReLU,输入是x,经过两层neuron后,得到输出a1,得到x与a1的关系。

如果我们把深度变为两层,那么a1与a2的关系很容易得到,如果我们想要得到x与a2的关系,我们可以发现,当x从0到0.5时,a1从1变为0,当x从0.5到1时,a1从 0变为1,而当x从0到0.5时,a2从1变为0,然后又变为1;同理当x从0.5到1时,a2从1变为0,然后又变为1,x与a2的关系如下图所示:

当深度变为3层时,x与a3的关系如下图所示:

通过上述结果可以得到,假如我们想要得到2^k个折线段的函数,只需要Deep Network有k层,每层有2个神经元;Shallow Network只有1层,需要2^k个神经元。因此,Deep Network参数量比较小,需要比较简单的模型;Shallow Network参数量比较大,需要比较复杂的模型,然而复杂的模型容易overfitting,所有需要大量的训练资料。

总结

通过本周的学习,我知道了deep的network它并不是需要更多的训练资料,反而它只需要很少的训练资料,且它的表现也比非deep的network要好,错误率要低。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值