类神经网络训练不起来怎么办(李宏毅)

发布于:2025-04-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

局部最小值Local和鞍点saddle point:

批次Batch和动量momentum:

自动调整学习Learning Rate:

损失函数Loss可能也会有影响:

​编辑Batch Normalization批次标准化:

识别宝可梦还是数码宝贝:


Optimization Fails  because local minima or  saddle point(最佳匹配失败)

局部最小值Local和鞍点saddle point:

local minima:四周都是最低, 他是图像的山谷。No Way To Go

saddle point:旁边有路可以走

利用泰勒展开,计算出θ0处的θ

怎么判断?利用泰勒公式,看是否是最高点?最低点?平常点?计算H矩阵的特征值的正负性即可 。

示例:y=(1-w1*w2*x)²

H是二次微分的那个矩阵

H等于【【0,-2】,【-2,0】】

特征值为±2,说明为Saddle point

出现这种情况怎么办?用特征向量带进去,求出数值,带进去,即沿着特征向量的方向走,会让Loss变小。逃离你的Seddle Point。

批次Batch和动量momentum:

Batch:所有的data分成一个一个Batch,Batch的规模在初步增加的时候消耗的时间不会有很多的增长.

Momentum:计算出Gradient和前一步的方向,来计算出下一步应该走的方向。

自动调整学习Learning Rate:

深度学习时Loss保持不变了,可能是在Local Minima的左右两边震荡,实际上并没有找到最低点。理想状态下如果在某一个方向上坡度特别的缓慢,要让Learning Rate大一点,如果很陡峭,就要让Learning Rate小一点,客制化Learning Rate。

Root Mean Square算法:

坡度小的时候算出来的g比较小。

也可以用RMSProp算法:主要是可以调整每个g的权重,但是会出现一种问题,当 δ很小的时候,η分数除一下会出现一个无穷大,会发生一次很大的震荡。但是震荡后会修正回来。

损失函数Loss可能也会有影响:

Classifica:

Regression:输入一个x通过一个模型的计算得出y与正确的y进行比较。

Classification:输入一个x通过一个模型的计算得出y class与正确的y class进行比较。

但是分类可能比较接近,可以把类别用向量表示。

Batch Normalization批次标准化:

把error surface的山铲平,更好的Optimization。如果Loss对于w1和w2的斜率很高。用一个巨大的network计算很多资料,求出平均值。

识别宝可梦还是数码宝贝:

        定义Function:图片线条化,计算线条复杂程度,复杂程度大于h是数码宝贝,复杂程度小于h是宝可梦。现在要计算这个h。h属于{1,2,......,10 000}。|H|有10 000个选择表示h的复杂程度。

        定义Loss:x为图片,y为分类。L(h,D)h表示参数,D表示测试集。用输出表示正确、输出1表示错误。

          Training Examples:假设能找到世界上所有的宝可梦和数码宝贝进行测试,测试后H all=argminL(h,D all)求得了H all为理想状况。

        但是实际上我们只有sample,D train要求iid(independently and identically distributed)独立同分布。求出了一个h要求值越小越好。。H all表示的是在这个数据集上测试的最佳结果,即理想值,他一定是最小的。那我们要找一个什么样的h?如下:我们需要找一个理想和现实接近的D train。

        那么找到一组好的训练资料的概率有多大呢?不好的训练资料意思是找不到任何一个h,让训练资料和全部资料的训练结果都很小。那么把每个h对应的坏的资料集用框圈起来,这个资料被那个h弄坏了,所有h的几率union起来,就是资料集是差的几率。

        能不能算出某个 h会被他弄坏的某些D train出现及几率?如下所示:

怎么让D train的几率更小的?

N要更大,|H|要更小。 

|H|如果很小,理想会崩坏,理想和显示直接差距很大,很难拟合现实。


网站公告

今日签到

点亮在社区的每一天
去签到