DL-深度学习基础

2023-11-02

目录

过拟合与欠拟合

降低过拟合风险的方法

降低欠拟合风险的方法


过拟合与欠拟合


  • 欠拟合指模型不能在训练集上获得足够低的训练误差
  • 过拟合指模型的训练误差与测试误差(泛化误差)之间差距过大
    • 反应在评价指标上,就是模型在训练集上表现良好,但是在测试集和新数据集上表现一般呢(泛化能力差)

降低过拟合风险的方法


所有为了减少测试误差的策略统称为正则化方法,这些方法可能以增大训练误差为代价

  • 数据增强 
    • 图像:平移、旋转、缩放
    • 利用生成对抗网络(GAN)生成新数据
    • NLP:利用机器翻译生成新数据  
  • 降低模型复杂度
    • 神经网络:减少网络层、神经元个数
    • 决策树:降低树的深度、剪枝 
  • 权值约束(添加正则化项)
    • L1正则化
    • L2正则化
  • 集成学习
    • 神经网络:Dropout
    • 决策树:随机森林、GBDT
  • 提前终止

数据集扩增

我们在使用训练数据训练模型,通过这个模型对将来的数据进行拟合,而在这之间又一个假设便是,训练数据与将来的数据是独立同分布的。即使用当前的训练数据来对将来的数据进行估计与模拟,而更多的数据往往估计与模拟地更准确
一般的方法:

1、重采样 
2、根据当前数据集估计数据分布参数,使用该分布产生更多数据等 

更多详细参考机器学习中防止过拟合的处理方法

正则化

首先看详解正则

L1正则化可以产生稀疏权值矩阵,让特征的权重等于0,用于特征选择
L2正则化可以防止模型过拟合,一定程度上,L1也可以防止过拟合

在这篇文章中,在解释为什么L1正则化会产生稀疏权值矩阵时,把w1 w2在二维平面上化成了正菱形,原因是L=|w1|+|w2|或者写为f(w1,w2)=|w1|+|w2|。无论是|w1|+|w2|=1,还是|w1|+|w2|=2,对应的图像都是一个正菱形,从1到2,菱形由小变大。我们要最小化损失函数,也就是要最小化L,那就是菱形越来越小,把最优值往原点方向拉,努力让w都变小。

           

降低欠拟合风险的方法


  • 加入新的特

    • 交叉特征、多项式特征

    • 深度学习:因式分解机、Deep-Crossing、自编码器

  • 增加模型复杂度

    • 线性模型:添加高次项

    • 神经网络:增加网络层数、神经元个数

  • 减小正则化项的系数

    • 添加正则化项是为了限制模型的学习能力,减小正则化项的系数则可以放宽这个限制

    • 模型通常更倾向于更大的权重,更大的权重可以使模型更好的拟合数据

 反向传播公式推导


详细步骤参考一问弄懂神经网络反向传播法BP

  • 可以用四个公式总结反向传播的过程

商标(l)表示网络的层,(L)表示输出层(最后一层),下标j和k指示神经元的位置,

w_jk表示l层第j个神经元与(l-1)层第k个神经元连线的权重

公式一:C代表总的损失函数  \frac{1}{2}(target1-a{1}^{L})^{2}+\frac{1}{2}(target2-a{2}^{L})^{2}...

公式二:加和符号上是 n{l}-1,nl表示第l层神经元的个数

激活函数


激活函数的作用-为什么要使用非线性激活函数

  • 使用激活函数的目的是为了向网络中加入非线性因素;加强网络的表示能力,解决线性模型不能解决的问题

为什么加入非线性因素能够加强网咯的表示能力?——神经网络的万能近似定理

  • 神经网络万能近似定理认为主要神经网络具有至少一个非线性隐藏层,那么只要给予网络足够数量的隐藏单元,他就可以以任意的精度来近似从一个有限维空间到另一个有限纬空间的函数
  • 如果不使用非线性激活函数,那么每一层输出都是上一层的线性组合;那么无论网络有多少层,其整体也将是线性的,最终的效果跟只有一层网络的效果一样,导致失去万能近似的性质
  • 但仅部分层是纯线性是可以接受的,这有助于减少网络中的参数

常见的激活函数 

整流线性单元 ReLU

  • ReLU通常是激活函数较好的默认选择

 

ReLU的拓展

  • ReLU及其拓展都基于以下公式

                             g(z;\alpha ) = max(0,z) + \alpha min(0,z)

当alpha = 0时,即标准的线性整流单元

  • 绝对值整流

        固定 alpha = -1 ,此时整流函数即绝对值函数 g(z) = |z|

  • 渗漏整流线性单元

        固定 alpha 为一个小值,比如0.001

  • 参数化整流线性单元

        将alpha作为一个可学习的参数

  • maxout单元

       maxout单元进一步扩展了ReLU,他是一个可学习的k段函数,参数数量是普通全联接层的k倍

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DL-深度学习基础 的相关文章

  • Handler processing failed; nested exception is java.lang.NoClassDefFoundError

    在使用阿里云发送短信接口时出现此错误 原因是springmvcjar包和阿里云jar包出现冲突 建议使用下面两个版本
  • 【工具】VirtualBox虚拟机安装Windows操作系统

    前面的文章中介绍了VirtualBox虚拟机的安装 VirtualBox虚拟机中如何安装操作系统 是本文的重点 下面将进行详细介绍 使用VirtualBox虚拟机安装Windows操作系统有很多好处 主要包括以下几点 节省资源 通过虚拟化技
  • Spring Boot将声明日志步骤抽离出来做一个复用类

    上文Spring Boot日志基础使用 设置日志级别中我们写了个比较基本的日志操作 但也随之产生了一个问题 我们这行代码 能不能不写 具体说 我们不希望每个需要日志的类都声明一个在这 看着太不美观了 我们最简单方法当然是继承 我们找个目录创
  • 论python自动化测试(3)- 自动化框架及工具

    python自动化测试 3 自动化框架及工具 1 概述 手续的关于测试的方法论 都是建立在之前的文章里面提到的观点 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到的 测试自动化 也将围绕着 接口自动化 来介绍
  • Linux Common Comment in Practices

    Linux中的命令的确是非常多 但是我们只需要掌握我们最常用的命令就可以了 当然你也可以在使用时去找一下man 他会帮你解决不少的问题 然而每个人玩Linux的目的都不同 所以他们常用的命令也就差异非常大 因为不想在使用是总是东查西找 所以

随机推荐

  • 网络安全等级保护合规一览

    公众号关注 WeiyiGeek 将我设为 特别关注 每天带你玩转网络安全运维 应用开发 物联网IOT学习 0x00 前言 0x01 等保2 0基本要求 0x02 等保定级 1 定级流程 2 定级比较 3 定级通用要求 0x03 合规流程 0
  • 自动化平台搭建之定制log系统

    log系统概述 我们搭建的自动化平台 无论是Web和Android 都少不了一个重要的模块 那就是log输出模块 该模块记录了整个自动化平台运行期间的日志记录 完成自动化测试后 我们可以通过日志追踪和分析fail项 根据自动化平台log输出
  • Intellj IDEA基础设置

    基础配置 view toolbar 配置jdk configure project defaults project structure new jdk 路径 添加插件 configure plugins 配置jvm内存 configure
  • Bootstrap的CSS类积累学习

    要看哪个的介绍 搜索关键词就行了 001 container 这是Bootstrap中定义的一个CSS类 它用于创建一个具有固定宽度的容器 比如 container类将 div 元素包装成一个固定宽度的容器 详情见 https blog c
  • STL vector的N种构造方式

    1 使用默认无参的构造函数进行构造 vector
  • 设计一算法,将已建立的单链表进行逆置

    单链表逆序有很多种方法 可是好多种方法都是逆序后就不能再使用之前定义的函数了 因为你的头结点变动了 不再是之前所定义的first或是head了 所以之前的方法都要重写 后来我终于想到了种很好的方法了 为了不重开空间 我们可以就在原来的那个单
  • leetcode:37. 解数独

    题目链接 37 解数独 文章目录 题目描述 思路 代码 题目描述 编写一个程序 通过填充空格来解决数独问题 数独的解法需 遵循如下规则 数字 1 9 在每一行只能出现一次 数字 1 9 在每一列只能出现一次 数字 1 9 在每一个以粗实线分
  • git lfs搭建 —— ubuntu20.04

    一直使用git lab 临时需要放一些pdf文档但有不需要git来版本管理 个人感觉比较占用资源 百度了一通 决定用git lfs 同时发现git lab有内置lfs使用说明 结合网上查得 总结如下 也是个人操作留档 本人使用vscode
  • 学生的姓名 ,年龄,性别,班级及爱好IDEA代码

    学生的姓名 年龄 性别 班级及爱好AIDE代码 package zy 学生类 class Person 属性 姓名 年龄 性别 班级 爱好 String name 姓名 int age 年龄 String sex 性别 int classN
  • 【数据结构】LoopQueue 循环队列

    数据结构源码 接口 public interface Queue
  • yarn安装依赖包报错 error An unexpected error occurred: “https://registry.npm.taobao.orgnpm/element-ui: get

    yarn安装依赖包报错 error An unexpected error occurred https registry npm taobao orgnpm element ui getaddrinfo ENOTFOUND registr
  • NAT(网络地址转换协议)

    目录 NAT 网络地址转换协议 作用 NAT转换内部地址范围 主要应用方向 NAT的优点 实验 1 静态NAT 一个内网地址对一个公网地址 2 动态NAT PAT 多个内网地址对多个公网地址 3 Easy ip 多个内网地址对一个接口 4
  • shell脚本实战:linux系统初始化和mysql8.0编译安装

    linux系统初始化脚本 bin bash version v1 author xingdian cat lt lt eof a 关闭防火墙 b 关闭selinux c 网络连通性检测 d 配置yum仓库 q 退出 eof read p 请
  • STM32 USB声卡录音(USB Microphone),基于CubeMX修改

    目录 说明 CubeMX配置 Pinout Clock Configuration Configuration 工程设置 代码工程修改 修改USB设备描述符 修改数据传输配置 声卡测试 说明 CubeMX生成的USB Audio Devic
  • Openwrt下安装Python3.5运行出现异常:Fatal Python error: Py_Initialize: Unable to get the locale encoding

    环境说明 Openwrt Python 3 5 依赖的库 libbz2 expat libopenssl libpthread zlib libffi libcrypto libncurses libpanel 使用说明 之前已经安装过py
  • OpenCV人脸识别

    OpenCV人脸识别与口罩检测 下载文件 人脸检测 人脸检测的检测方法主要有两类 基于知识 根据眼睛 眉毛 嘴巴 鼻子等器官特征及相互几何位置关系来检测 和基于统计 将人脸看作一个二维像素矩阵 通过大量人脸图像样本构造人脸模式空间 由相似度
  • kafka进阶

    kafka进阶 初识kafka 生产者 消费者 主题与分区 springboot kafka 集群 监控 面试题 初识kafka 消息队列 分布式发布 订阅消息系统 日志处理 基础架构 Producer 消息生产者 向Kafka中发布消息的
  • FSDirectory介绍

    其中常用的就是FSDirectory 表示对文件系统目录的操作 RAMDirectory 内存中的目录操作 首先我们看看类FSDirectory的源代码 import java io File import java io FileInpu
  • 2019完整的大数据知识体系,大数据学习路线图

    任何学习过程都需要一个科学合理的学习路线 才能够有条不紊的完成我们的学习目标 大数据所需学习的内容纷繁复杂 难度较大 有一个合理的大数据学习路线图帮忙理清思路就显得尤为必要 在这里还是要推荐下我自己建的大数据学习交流群 199427210
  • DL-深度学习基础

    目录 过拟合与欠拟合 降低过拟合风险的方法 降低欠拟合风险的方法 过拟合与欠拟合 欠拟合指模型不能在训练集上获得足够低的训练误差 过拟合指模型的训练误差与测试误差 泛化误差 之间差距过大 反应在评价指标上 就是模型在训练集上表现良好 但是在