Tensor flow学习笔记

欠拟合和过拟合

欠拟合:模型表达能力不够
过拟合:模型表达能力过强,缺少模型泛化能力

欠拟合的解决办法:
1、增加输入特征项
2、增加网络参数量
3、减少正则化参数
过拟合的解决方法:
1、数据清洗
2、增大训练集
3、采用正则化
3、增大正则化参数

正则化缓解过拟合

什么是正则化: 在随时函数中引入模型复杂度指标,利用给每个参数w增加一个权重,用来弱化训练数据时的噪声。(一般不对b进行正则化)

这时新的loss定义为:
loss = loss(y_, y) + REGULARIZER * loss(w)
其中
loss(y_, y) 是指模型中所有参数的损失函数,如交叉熵,均方误差
REGULARIZER 超参数,用来给出参数w在总loss中的比例。即正则化的权重
w 需要正则化的参数

常用的loss(w)

loss(L1)= ∑ | w | (L1正则化)

loss(L2)= ∑ | w^2| (L2正则化)
L1正则化 :大概率会使很多参数变为0,因此该方法可通过稀疏参数,,即减少参数的数量,降低复杂度
L2正则化: 会使参数很接近零,但不为零,因此该方法可通过减少参数值的大小降低复杂度

Q:为什么L1正则化会使很多参数变为0?
A:链接: link.

生成表格

np.mgrid[-3:3:.1,-3:3:.1]

神经网络参数优化器

待优化参数w,损失函数loss,学习率lr,每次迭代一个batch,t表示当前batch迭代的总次数
1、计算 t 时刻随时函数关于当前参数的梯度 g(t) = ▼loss = loss对w在 t 时刻求偏导
2、计算 t 时刻一阶动量(与梯度相关的函数)Mt和二阶动量(与梯度平方相关的函数)Vt
不同的优化器实际上是定义了不同的一二阶动量的公式
3、计算 t 时刻下降梯度:η = lr * m / √V
4、计算 t +1 时刻参数 w = w - η = w - lr * m / √V

SGD(无momentum)

m一介动量 V 二阶动量

1、m = g (梯度) V = 1
2、 t 时刻下降梯度:η = lr * m / √V = lr * g
3、t1 时刻 w = w(t)- η = w(t)- lr * g

SGDM(含momentum的SGD)在sgd的基础上增加了一介动量

g(t) :t时刻的梯度 m(t):t 时刻的一阶动量
V(t) t时刻的二阶动量
β 超参数, 接近1(经验值为0.9)

1 、m(t) = βm(t-1)+(1 - β) * g(t) 即下一时刻的一介动量由当前时刻的一阶动量和 当前时刻的梯度决定 。默认0时刻,m_w,m_b均为0
2、V(t)= 1
3、η = lr * m / √V = lr * (β
m(t-1)+(1 - β) * g(t) )
4、w(t+1)= w(t)- η

Adagrad(在SGD的基础上引入二阶动量)

1、m(t) = g(t)(一阶动量和SGD一致)
2、V(t)= ∑g(t)^2
3、η = lr * m / √V = lr * g(t)/ √(∑g(t)^2)
4、w(t+1) = w(t)-η(t) = w(t)- lr * g(t)/ √(∑g(t)^2)

RMSProp

1、m(t) = g(t)(一阶动量和SGD一致)
2、V(t) = β*V(t-1)+(1 - β) * g(t) ^2
3、经验超参:beat = 0.9
4、参数自更新:η = lr * m / √V

Adam

1 、m(t) = βm(t-1)+(1 - β) * g(t)
修正一阶动量的偏差
2、V(t) = β
V(t-1)+(1 - β) * g(t) ^2
修正二阶动量的偏差

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值