2023-04-06 15:51阅读: 172评论: 0推荐: 0

一、正则化

1、正则化的理解

    当模型的复杂度>>数据的复杂度时,会出现过拟合现象,即模型过度拟合了训练数据,其泛化能力变差。为此,会通过数据增强、降维、正则化等方法防止模型过拟合。

argminω(L(w)+λΩ(w))

  式子里面,前者为损失函数,后者为正则化项。
  从数学角度理解,以线性回归为例,其损失函数为:

L(ω)=Ni=1||ωTyi||2

   可以得到:

W=(XTX)1XTY

   需要对XTX求逆,才能得到解。
   对于 XN×P, xiRP, 其中 N 为样本数,P为样本维度,当 P>>N 时,在数学上,表现为XTX不可逆,在现象上,即为模型过拟合。
   若以L2正则化方法进行约束,则有:

J(ω)=Ni=1||ωTyi||2+λWTW=(WTXTYT)(XWY)+λWTW=WTXTXWWTXTYYTXW+YYT+λWTW=WTXTXW2WTXTY+YTY+λWTW=WT(XTX+λI)W2WTXTY+YTY

   求导:

J(ω)ω=2(XTX+λI)W2XTY

   解得:

W=(XTX+λI)1XTY

    XTX 为半正定矩阵,λI 为半角矩阵,(XTX+λI) 为正定矩阵,一定可逆,这从数学上解释了正则化的原因。

2、L1 正则化(Lasso Regression) 与 L2 正则化(岭回归,Ridge Regression )

   神经网络中,参数 θ 包括每一层的权重 ω 和偏置 b,通常情况下,只对权重 θ 进行惩罚,因为其关联两个变量之间的相互作用,而 b 仅控制一个参数,不进行正则化也不会导致太大方差,为了减小空间,所有层使用共同的权重衰减。

  L1L2正则化,可以看作是在损失函数中引入了惩罚项。先来介绍下L1L2正则化损失函数:

  L1 损失函数,也叫最小绝对值偏差(LAD)或绝对值损失函数(LAE),即把目标值 yi 与估计值 f(xi) 的差的绝对值总和最小化:

L=ni=1|yif(xi)|

  L2 损失函数,也叫最小平方误差(LSE),即把目标值 yi 与估计值 f(xi) 的差的平方和最小化。

L=ni=1yif(xi))2

3、L1 正则化的稀疏性

TODO...画图啊。。。好麻烦。。。有空在更

4、Dropout

   Dropout 给正则化提供了一个非常简便的方法,即在训练过程中,让神经元以超参数 p 的概率被激活或设置为0。参考CS231n笔记
  值得注意的是,对于某一神经元的输入 x ,经过 Dropout 后,期望值为 E=px+(1p)×0为了在测试时与训练时获得相同的预期输出,需要对其进行缩放,主要有在训练时缩放预测时缩放,训练时缩放的好处在于,无论是否使用 Dropout ,预测的代码可以保持不变。

"""
inverted dropout(反向随机失活): 推荐实现方式.
在训练的时候drop和调整数值范围,测试时不用任何改变.
"""
p = 0.5 # 激活神经元的概率. p值更高 = 随机失活更弱
def train_step(X):
# 3层neural network的前向传播
H1 = np.maximum(0, np.dot(W1, X) + b1)
U1 = (np.random.rand(*H1.shape) < p) / p # 第一个dropout mask. /p 即为缩放,保证期望相同
H1 *= U1 # drop!
H2 = np.maximum(0, np.dot(W2, H1) + b2)
U2 = (np.random.rand(*H2.shape) < p) / p # 第二个dropout mask. /p 即为缩放,保证期望相同
H2 *= U2 # drop!
out = np.dot(W3, H2) + b3
# 反向传播:计算梯度... (略)
# 进行参数更新... (略)
def predict(X):
# 前向传播时模型集成
H1 = np.maximum(0, np.dot(W1, X) + b1) # 预测不用缩放了
H2 = np.maximum(0, np.dot(W2, H1) + b2)
out = np.dot(W3, H2) + b3

5、提前终止(Early Stopping)

  我愿称之为懒人必备正则化方法,简单且有效。
  在训练模型的后期,经常会出现训练集上的 Loss 还在下降,但验证集上的 Loss 反而开始上升,说明模型开始过拟合了,此时保存验证集上 Loss 最低的模型即可。

6、多任务学习(Multi-task)

  多任务学习是通过合并几个任务从而提高泛化能力的方式,可以视作对参数施加了软约束。当模型的一部分被多个任务共享时,这部分将被约束为更好的值,前提是共享的任务合理,会提高模型的泛化能力。
  这部分好像没什么好说的,现在大部分的 E2E 模型都会使用多任务,BEV 感知里面也经常使用。

7、数据增强、添加噪声等

  数据增强基本是在写大部分 DatasetDataloader 的时候必定经过的一个流程了,需要注意的是,对于分类任务,不能使用改变类别的变换,比如 69 ,对于目标检测任务使用旋转或放缩变换时,注意检测框需要一并进行处理。

本文作者:Abyss_J

本文链接:https://www.cnblogs.com/abyss-130/p/17293042.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Abyss_J  阅读(172)  评论(0编辑  收藏  举报
  1. 1 it's 6pm but I miss u already. Audio artist
  2. 2 願い~あの頃のキミへ~ Audio artist
  3. 3 404 not found REOL
願い~あの頃のキミへ~ - Audio artist
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 童子-T

作曲 : Shingo.S/童子-T

ふたりの思い出

かき集めたなら

また泣けてきちゃう

寂しさ溢れて

最後の恋だと信じて願った

あの日々にウソはなかった

希望夢明るい未来

東京に持った大きな期待

だけど現実は甘くなくて

落ち葉見つめ深く思いつめてた

そんな時にあなたと出会って

いつもあなたに助けられて

バイトが楽しみになって

実はシフト被るように狙ってた

スタンプ使いが妙に上手くて

お化けも虫も受け付けなくて

くしゃくしゃの笑顔が可愛くて

眠れない夜は君のせいで

この気持ち今すぐに伝えたい

けどバレたくない

どうしたらいいの

迷ってるうちに

夜明けが来て

馬鹿みたいに後悔して

ふたりの想い出

かき集めたなら

また泣けてきちゃう

寂しさ溢れて

最後の恋だと信じて願った

あの日々にウソはなかった

帰り道の公園で受けた告白

ベタすぎるセリフ笑っちゃった

一生忘れられない思い出

あなたがプレゼントしてくれた

一日中ゲームやりこんで

夜ご飯は一緒に作って

贅沢なんてしなくたって

2人いればそれだけでよくて

口下手2人が本気で喧嘩

お互いブロック通じない電話

本気でぶつかり合えることが

どんな愛しいが気づけなかった

あなたが教えてくれたこと

くれたもの

胸に刻み過ごしてる今日も

だから伝えたいありがとう

ふたりの想い出

かき集めたなら

また泣けてきちゃう

寂しさ溢れて

最後の恋だと信じて願った

あの日々にウソはなかった

子供のままでいられたなら

何も怖がらず歩いて行けたかな

もっと早く大人になっていたなら

2人で乗り越えられたかな

今も君の夢夜空へ願う

今でも君は

あの頃と同じ笑顔で

今でも君は

あの頃のようにまっすぐで

今でも君は

あの頃と変わらない優しさで

今でも君は

君のままでいてほしいそう願うよ

ふたりの想い出

かき集めたなら

また泣けてきちゃう

寂しさ溢れて

最後の恋だと信じて願った

あの日々にウソはなかった

ふたりの想い出集めたら

泣き出しそうになる今夜も

寂しさ溢れて苦しくなる

最後の恋と信じ願った

あの日々に嘘はなかった

離れてもあなたの幸せ願う

ふたりの想い出集めたら

泣き出しそうになる今夜も

寂しさ溢れて苦しくなる

最後の恋と信じ願った

あの日々に嘘はなかった

離れてもあなたの幸せ願う

💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑
点击右上角即可分享
微信分享提示