神经网络 07(正则化)

一、正则化

在设计机器学习算法时不仅要求在训练集上误差小,而且希望在新样本上的泛化能力强。许多机器学习算法都采用相关的策略来减小测试误差,这些策略被统称为正则化。因为神经网络的强大的表示能力经常遇到过拟合,所以需要使用不同形式的正则化策略
正则化通过对算法的修改来减少泛化误差,目前在深度学习中使用较多的策略有参数范数惩罚,提前终止,DropOut等,接下来我们对其进行详细的介绍。

 

1.1 L1和L2正则化

L1和L2是最常见的正则化方法。它们在损失函数 (cost function)中增加一个正则项,由于添加了这个正则化项,权重矩阵的值减小,因为它假定具有更小权重矩阵的神经网络导致更简单的模型。因此,它也会在一定程度上减少过拟合。然而,这个正则化项在L1和L2中是不同的。

它是一个需要优化的超参数。L2正则化又称为权重衰减,因为其导致权重这里的入是正则化参数,趋向于0(但不全是0)。

这里,我们惩罚权重矩阵的绝对值。其中,入为正则化参数,是超参数,不同于L2,权重值可能被减少到0.因此,L1对于压缩模型很有用。其它情况下,一般选择优先选择L2正则化。

 1.2 dropout 正则化

dropout是在深度学习领域最常用的正则化技术。Dropout的原理很简单: 假设我们的神经网络结构如下所示,在每个迭代过程中,随机失活某些节点,并且删除前向和后向连接

因此,每个迭代过程都会有不同的节点组合,从而导致不同的输出,这可以看成机器学习中的集成方法 (ensemble technique)。集成模型一般优于单一模型,因为它们可以捕获更多的随机性。相似地,dropout使得神经网络模型优于正常的模型。

tf.keras.layers.Dropout(rate)

rate 每一个神经元被丢弃的概率

1.3 早停

提前停止 (early stopping) 是将一部分训练集作为验证集 (validation set)。当验证集的性能越来越差时或者性能不再提升,则立即停止对该模型的训练。这被称为提前停止。

在上图中,在虚线处停止模型的训练,此时模型开始在训练数据上过拟合

1.4 批标准化

批标准化(BN层,Batch Normalization)是2015年提出的一种方法,在进行深度网络训练时,大多会采取这种算法,与全连接层一样,BN层也是属于网络中的一层
BN层是针对单个神经元进行,利用网络训练时一个 minibatch 的数据来计算该神经元xi 的均值和方差,归一化后并重构,因而称为 Batch Normalization。在每一层输入之前,将数据进行BN,然后再送入后续网络中进行学习:

 然后在使用变换重构,引入了可学习参数Y、B,如果各隐藏层的输入均值在靠近0的区域,即处于激活函数的线性区域不利于训练非线性神经网络,从而得到效果较差的模型。

因此,需要用Y和B对标准化后的结果做进一步处理:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/107142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天40min,我们一起用70天稳扎稳打学完《JavaEE初阶》——33/70 第三十三天【JavaScript(webapi)】

JavaScript WebAPI WebAPI 背景知识DOM 基本概念获取元素事件初识操作元素输入密码的 显示 和隐藏点击计数器勾选复选框获取/修改 样式 属性开关灯WebAPI 背景知识 DOM 基本概念 获取元素 事件初识

敏捷开发:适应变化的核心能力

​在当今高度变化的时代,软件开发的环境和要求也在不断变化。传统的开发方法往往难以适应这种快速变化,因此,一种新的软件开发方法——敏捷开发逐渐得到了广泛的关注和应用。 本文将介绍敏捷开发的概念、优势、实践经验、敏捷开发工具以及注…

python实现adb辅助点击屏幕工具

#!/usr/bin/env python # -*- coding: utf-8 -*-import re import os import time import subprocess import tkinter as tk from tkinter import messagebox from PIL import Image, ImageTk# 设置ADB路径(根据你的系统和安装路径进行调整) ADB_PATH C…

强化历程7-排序算法(2023.9.12)

此笔记学习图片来自于如下网址 1https://www.west999.com/info/html/chengxusheji/Javajishu/20190217/4612849.html 文章目录 强化历程7-排序算法1 冒泡排序(交换排序)2 选择排序3 直接插入排序4 希尔排序5 归并排序6 快速排序7 堆排序8 计数排序 强化历程7-排序算法 1 冒泡排…

QT for andriod

QT for andriod 开发 apk软件,因为一些特殊的原因,在这里简单的记录一哈自己开发apk的流程和心得。 首先说明我采用的环境有哪些? 1、QT的版本,个人建议5.15.2的版本及以上,我是用的5.15.2。 2、andriod studio 可以…

记录一次Docker与Redis冲突

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 报错以及Bug ✨特色专栏: …

sql 时间函数

1,前提 今天看同事写的sql里面出现了时间类的函数,平时自己也经常用到,每次都要百度,还不如自己整理记录在一起,方便后续使用。 2,sql时间函数 2.1 获取当前时间: selectNOW() as 当前日期时…

Autojs 小游戏实践-神农百草园

概述 最近一直再写刷视频软件脚本,比如手机视频软件太多,每天都需要手动提现羊毛,太累,使用Autojs来帮助我提现,签到,扯远了,因为做刷视频脚本感觉有点无聊,所以试着做小游戏找图脚…

【GO语言基础】变量常量

系列文章目录 【Go语言学习】ide安装与配置 【GO语言基础】前言 【GO语言基础】变量常量 【GO语言基础】数据类型 文章目录 系列文章目录常量和枚举变量声明全局变量声明大小写敏感 总结 常量和枚举 使用const关键字声明常量,并为每个常量提供显式的值。Go语言没有…

IDEA启动时选择项目

IDEA默认情况下,启动时会选择上一次打开的项目继续。如果我们希望每次启动时都需要手动选择项目,可以按照下列顺序修改: 【File】-【Settings】-【Apperance&Behavior】-【System Settings】-【Startup/Shutdown】 取消选中Reopen last…

LayoutLM【论文翻译】

文章目录 基础信息0 ABSTRACT1 INTRODUCTION2 LAYOUTLM2.1 The BERT Model2.2 The LayoutLM Model2.3 Model Architecture2.4 Pre-training LayoutLM2.5 Fine-tuning LayoutLM 3 EXPERIMENTS3.1 Pre-training Dataset3.2 Fine-tuning Dataset3.3 Document Pre-processing3.4 Mo…

200个常用的Python编程相关英语词汇以及它们的中文释义

大家好,我是涛哥。 好多小伙伴反馈说在学习python的过程中,遇到的英文比较多,为自己的学习和开发产生了很大的阻力,所以为大家梳理了一份 Python编程相关常用的英语词汇以及它们的中文释义,当你刚开始学习Python编程的…