神经网络DNN ——正则化

一、过拟合与正则化作用

1、先了解什么是过拟合

了解什么是过拟合问题,以下面图片为例,我们能够看到有两个类别,蓝色是分类曲线模型。

  • 欠拟合:图1分类,不能很好的将X和O很好的分类,属于欠拟合。
  • 正拟合:图2有两个X被误分类,但是大部分数据都能很好的分类,误差在可接受范围内,分类效果好,属于良好的拟合模型。
  • 过拟合:图3虽然能够全部分类正确,但分类曲线明显过于复杂,模型学习的时候学习了过多的参数项,但其中某些参数项是无用的特征。当我们进行识别测试集数据时,就需要提供更多的特征,如果测试集包含海量的数据,模型的时间复杂度可想而知。

2、正则化作用

模型过拟合是因为模型过于复杂,可以通过对特征变量系数的调整来避免过拟合,而引入正则化正是为了实现这个目的,具体如何实现将在下一节说明。

常见的正则化方法有这几种:

  • 当参数是向量的时候(如logistics回归,参数为$\left (\theta _{i}:\theta _{1},\theta _{2},...,\theta _{n}  \right )$),有L1正则化、L2正则化。
  • 当参数是矩阵的时候(如神经网络的权重矩阵W),这时候用的是F-1范数正则化、F-2范数正则化,现在基本都是使用F-2范数正则化比较多。
  • 神经网络还有Drop正则化。
  • 增加训练集的数据量可以避免过拟合,另外有些模型可以用集成学习的Bagging、boost方法来进行正则化。

二、神经网络的正则化

1、矩阵的F-1范数、F-2范数(Frobenius范数,注意:这里和logistics回归的L1、L2正则化的向量范数不一样)

  • 矩阵的F-1范数:矩阵所有元素的绝对值之和:

$$\left \| W \right \|_{1}=\sum_{i,j}\left |\omega _{i,j}  \right |$$

  • 矩阵的F-2范数:矩阵所有元素的平方求和后开根号:

$$\left \| W \right \|_{2}=\sqrt{\sum_{i,j}\left (\omega _{i,j}  \right )^{2}}$$

2、L1正则化与L2正则化

假设神经网络的损失函数为J(W,b),参考逻辑回归的正则化,是在损失函数J(W,b)后面加一个正则化项,神经网络DNN也是一样的,只是变成了加F-范数,L1正则化与L2正则化如下所示:

$$L2: J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\sqrt{\sum_{i,j}\left (\omega _{i,j}  \right )^{2}}$$

$$L1: J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{1}=J(W,b)+\frac{\lambda }{m}\sum_{l\epsilon L}\sum_{i,j}\left |\omega _{i,j}  \right |$$

这里m为样本数,l为各个隐藏层,$\lambda$为超参数,需要自己调试。

3、以L2正则的权重衰减防止过拟合

由于L1正则与L2正则原理相似,而且大多数神经网络模型使用L2正则,所以这里以L2为例来说明为什么能防止过拟合。

直观理解:

原损失函数$J(W,b)$加上正则项$\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$之后的新损失函数$J(W,b)^{‘}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$,在使用梯度下降训练模型时,目标是要最小化新的损失函数$ J(W,b)^{‘}$,我们在训练前先设置超参数$\lambda$,若设置较大的超参数$\lambda=0.9$,则相对于设置较小的超参数$\lambda=0.1$,我们需要更小的权重F-2范数$\left \| W \right \|_{2}$才能够使得我们达到最小化$ J(W,b)^{‘}$的目的。所以如果我们使用较大的超参数$\lambda$的时候,会使得W整体变得更加的稀疏,这样就可以使得W的影响减少,从而避免了由于模型过于复杂导致的过拟合。

公式推导:

$$新损失函数:J(W,b)^{‘}=J(W,b)+\frac{\lambda }{2m}\sum_{l\epsilon L}\left \| W \right \|_{2}$$

原文地址:https://www.cnblogs.com/dwithy/p/11269994.html

时间: 2024-10-20 17:58:02

神经网络DNN ——正则化的相关文章

3. DNN神经网络的正则化

1. DNN神经网络的前向传播(FeedForward) 2. DNN神经网络的反向更新(BP) 3. DNN神经网络的正则化 1. 前言 和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考虑泛化,这里我们就对DNN的正则化方法做一个总结. 2. DNN的L1和L2正则化 想到正则化,我们首先想到的就是L1正则化和L2正则化.L1正则化和L2正则化原理类似,这里重点讲述DNN的L2正则化. 而DNN的L2正则化通常的做法是只针对与线性系数矩阵\(W\),而不针对偏倚系数\(b\).利用

深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用

深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能力,适合于加速深度神经网络训练.DNN的单机多GPU数据并行框架是腾讯深度学习平台的一部分,腾讯深度学习平台技术团队实现了数据并行技术加速DNN训练,提供公用算法简化实验过程.对微信语音识别应用,在模型收敛速度和模型性能上都取得了有效提升--相比单GPU 4.6倍加速比,数十亿样本的训练数天收敛,测

79、tensorflow计算一个五层神经网络的正则化损失系数、防止网络过拟合、正则化的思想就是在损失函数中加入刻画模型复杂程度的指标

''' Created on Apr 20, 2017 @author: P0079482 ''' import tensorflow as tf #获取一层神经网络边上的权重,并将这个权重的L2正则化损失加入名称为'losses'的集合中 def get_weight(shape,lambda1): #生成一个变量 var = tf.Variable(tf.random_normal(shape),dtype=tf.float32) #add_to_collection函数将这个新生成变量的L

stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)

在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(training instance),每个训练实例是一个400维特征的列向量(20*20 pixel image).用 X 矩阵表示整个训练集,则 X 是一个 5000*400 (5000行 400列)的矩阵 另外,还有一个5000*1的列向量 y ,用来标记训练数据集的结果.比如,第一个训练实例对应的输出

【深度学习系列2】Mariana DNN多GPU数据并行框架

[深度学习系列2]Mariana DNN多GPU数据并行框架 本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架. 深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点[1][2],产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能力,适合于加速深度神经网络训练.DNN的单机多GPU数据并行框架是Mariana的一部分,Mariana技术

OpenCV DNN之YOLO实时对象检测

OpenCV DNN之YOLO实时对象检测 OpenCV在3.3.1的版本中开始正式支持Darknet网络框架并且支持YOLO1与YOLO2以及YOLO Tiny网络模型的导入与使用.YOLO是一种比SSD还要快的对象检测网络模型,算法作者在其论文中说FPS是Fast R-CNN的100倍,基于COCO数据集跟SSD网络的各项指标对比 在最新的OpenCV3.4上我也测试了YOLO3,发现不支持,因为YOLO3有个新层类型shortcut,OpenCV3.4的Darknet暂时还不支持.这里首先

人工神经网络算法原理和应用

人工神经网络 什么是人工神经网络? 我们先从他的结构谈起 说明: 通常一个神经网络由一个input layer,多个hidden layer和一个output layer构成.图中圆圈可以视为一个神经元(又可以称为感知器)设计神经网络的重要工作是设计hidden layer,及神经元之间的权重添加少量隐层获得浅层神经网络SNN:隐层很多时就是深层神经网络DNN 原文地址:https://www.cnblogs.com/wqbin/p/10242471.html

关于机器学习的一些杂谈

晚上睡不着,突然想了一些机器学习中的问题,发现似乎可以类比于生活.因为从某种程度来说,机器学习是模仿人类学习,那么反推回去,机器学习似乎也可以给生活或学习一些启示. 机器学习中的损失函数,是用来衡量一个机器学习模型的好坏程度.通常机器学习的过程就是不断的使得损失函数减少的过程.对于生活与学习来说,就是我们对于一件事情的期望或者自己最终要实现的目标.我们最想做的就是不断的缩小与目标的差距,最终实现目标. 机器学习中模型参数的初值,一般是随机化赋值或用全零进行初始化.在机器学习过程中,好的初值可以减

交互能力的提升

随着电 脑科技的进步,影像呈现的精致程度和效率都大幅提升,全景拍摄/剪接技术也更成熟了. 动作捕捉和空间定位技术也丰富了 VR /AR内容的互动性. 伴随着VR的交互式叙事方式带来的视觉.触觉.听觉.味觉.嗅觉等多元互动体验是前所未有的. VR 的诞生将颠覆人类与计算机交互的方式. 在VR的交互体验方面,除了VR设备提供准确的运动跟踪数据之外.在VR软件中还需要分析一段时间内的运动数据,并与标准的动作模式进行匹配,来理解用户的操作意图. ***  << 听觉相关技术 >>  ***