CS231n-2017 Lecture6训练神经网络(一)笔记

本节主要讲的是模型训练时的算法设计

数据预处理:

关于数据预处理,我们有常用的3个符号,数据矩阵X,假设其尺寸是[N\times D],N是数据样本的数量,D是数据的维度

均值减法(Mean subtraction):

是预处理最常用的形式,它对数据中每个独立特征减去其该独立特征在所有样本中的平均值

对于图片来说,更常见的时对所有像素都减去所有像素值的平均值,也可以在3个颜色通道上分别操作

归一化(Normalization):

指将数据的所有维度都归一化,使其数值范围都近似相等

这个操作的意义在于当不同维度的输入特征具有不同的数值范围(或计量单位)且差异较大时,可以避免传播时部分特征相关的权重的梯度过大

在图像处理中,由于像素的数值范围几乎是一致的,所以额外进行这个预处理步骤就显得没有那么必要

归一化的两种方法:

第一种方法:

对数据做0中心化处理,然后对每个维度都除以其维度对应的标准差

X_{norm} = \frac{X-\bar{X}}{S}

其中S为X的标准差

第二种方法:

对每个维度都做归一化,使得每个维度的最大值和最小值是1和-1

X_{norm} = 2\times \frac{X-X_{min}}{X_{max} - X_{min}}-1

PCA与白化(Whitening):

我们可以对协方差矩阵进行SVD(奇异值分解),并利用奇异值分解来减小数据矩阵的size

这里先来复习一下SVD

SVD的描述如下:

奇异值:

A是秩为r的m\times n 的矩阵,则A^T A是对称矩阵且可以正交对角化,则A^TA的特征值\lambda_i > 0, 1\leq i \leq r,设对应的特征向量为{v_1,v_2,...,v_n}, 则规定奇异值\sigma_i = \sqrt{\lambda_i},且\sigma_i = ||Av_i||

奇异值分解:

矩阵A同上,那么存在一个矩阵\Sigma = \begin{bmatrix} D & 0\\ 0 & 0 \end{bmatrix},其中D的对角元素是A的前r个奇异值,满足排序\sigma_1 \geq \sigma_2 \geq ... \geq \sigma_r > 0,且存在一个m\times m 的正交矩阵U和一个n\times n 的正交矩阵V,使得A = U\Sigma V^T

其中

u_i = \frac{1}{\sigma_i}Av_i 是U的第i个列向量,当m>n时,多余的u自行补充单位向量,使U满足正交矩阵

v_i和上面提到的意义一致,构成V的第i个列向量

PCA过程:

原理:

X_1,X_2,...,X_m表示以x_1,x_2,...,x_m为样本观测值的是随机变量,如果能找到c_1,c_2,...,c_m,使得Var(c_1X_1+c_2X_2+...+c_mX_m)的值达到最大,就表明了这m个变量的最大差异,当然需要规定\sum_{i=1}^{m}c_i^2 = 1,否则Var可以是无穷大

这个解[c_1,c_2,...,c_m]^T是m维空间的一个单位向量,代表一个方向,称之为主成分方向

一般来说代表原来m个变量的主成分不止一个,但不同主成分信息之间不能相互包含,即两个主成分的协方差应为0

即:

F_i = \sum_{k=1}^{m}c_{ik}x_k表示第i个主成分

C_i = [c_i1,c_i2,...,c_im]^T要使Var(F_i)达到最大,又要有C_{i+1}C_i垂直,且使F_{i+1}达到最大,以此类推,至多可以得到m个主成分

步骤:

1.先对数据进行0中心化处理,然后计算协方差矩阵R(这里也是相关系数矩阵),假设size为[m\times m]

R的第(i,j)个元素是第i个维度和第j个维度的协方差,所以可以知道,这个矩阵是一个方阵,且是对角矩阵,且对角线上的元素,比如第(i,i)个元素,恰好是第i维特征的方差。且该矩阵是半正定矩阵

2.计算出R的特征值\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_m,以及对应的标准正交化特征向量u_1,u_2,...,u_m,其中u_j = [u_{1j},u_{2j},...,u_{mj}]^T

则得到m个主成分,第i个主成分为

F_i = \sum_{k=1}^{m}u_{ik}x_k,其中x_k已经被归一化了

3.计算前j个主成分的累计贡献率:

\frac{\sum_{k=1}^{j}\lambda_k}{\sum_{k=1}^{m}\lambda_k}

取定贡献率一个阈值,比如75%,进而解得j,从而确定保留j个主成分

4.最后我们保留j个主成分代替之前的m个X进行分析即可,也就是把维度m降低到了j

实际计算中,我们常用SVD代替步骤2的特征分解(计算效率更高),也就是先对数据矩阵进行标准化,然后直接对数据矩阵D进行SVD分解(跳过计算协方差矩阵这一步),然后用SVD的V里的v_i替代上文的u_i\lambda_i就取D^TD\lambda_i,假设最后保留j个主成分,其对应的向量为[v_1,v_2,...,v_j],则降维后的矩阵变成Z\times[v_1,v_2,...,v_j]

优点:

通常使用PCA降维后的数据训练神经网络的性能会更好,同时节省时间和储存器空间

白化:

目的是为了让数据具有以下特性:

1.均值为0,数据分布的中心在原点

2.单位协方差,所有维度的方差为1

3.无相关性,不同维度之间完全独立,协方差为0

步骤:

1.中心化,减去均值

2.计算协方差矩阵

3.对协方差矩阵进行特征值分解

4.对每个维度除以其特征值的平方根,在除的时候,为了防止分母为0,需要添加一个小常量

PCA与白化通常不用于卷积神经网络

预处理重要规则:

对于训练集/验证集/测试集,我们在中心化的时候,只采用集合内有的样本所产生的统计特征量进行预处理,比如,对训练集进行预处理的时候,只用训练集的均值/方差;对验证集、测试集同理

权重初始化:

小随机数初始化:

由于数据经过了恰当的归一化处理,可以假设所有权重数值大约一半为正数,一半为负数,则其期望应为0,但又不能全为0,因为神经元之间是不对称的,所以,我们可以将权重初始化为小的数值,随机且不相等,通常的随机是从基于0均值和标准差为1的高斯分布中生成随机数。但不是小数值就一定会得到好的结果,因为这样会导致反向传播时出现非常小的梯度,从而很大程度地减小反向传播中的梯度信号

使用\frac{1}{\sqrt{n}} 来校准方差

上述的做法存在一个问题,随着输入数据量的增大,随机初始化神经元的输出数据分布中的方差也在增大,因此,我们需要将其除以输入数据量的平方根,来调整其方位,使其输出的方差归一化到1

证明过程如下:

Var(s) = Var(\sum_{i}^{n}w_ix_i)

=\sum_{i}^{n}(w_ix_i)

=\sum_{i}^{n}\{[E(w_i)]^2Var(x_i)+E(x_i^2)Var(w_i)+Var(x_i)Var(w_i)\}

=\sum_{i}^{n}Var(x_i)Var(w_i)

=(nVar(w))Var(x)

第三个等号到第四个等号用到了E(x_i) = E(w_i) = 0

所以,如果想要s和x有一样的方差,就需要满足nVar(w) = Var(\sqrt{n}w) = 1,又我们之前是由标准差为1的高斯分布随机取得w,所以Var(w) = 1,所以我们只要令w = \frac{1}{\sqrt{n}}w即可

稀疏初始化(Sparse initialization):

将所有权重矩阵设为0,但为了打破对称性,每个神经元都要与下一层固定数目(经典连接数目是10个)的神经元随机连接(权重由小的高斯分布生成)

偏置的初始化:

通常将偏置初始化为0,这是因为随机数权重矩阵已经打破了对称性,对于ReLU非线性激活函数,有人喜欢用0.01这样的小数值常量作为所有偏置的初始值,认为这样做能够使所有的ReLU单元一开始就激活

批量归一化(Batch Normalization):

核心思想是在网络的每一层(尤其是全连接层/卷积层之后,激活函数之前),对输入数据进行标准化处理,使其在训练过程中保持相对稳定的分布,从而缓解梯度消失/爆炸,提高对初始化和学习率的鲁棒性

步骤:

假设我们有一个mini_batch的数据输入,size为m,对于每个神经元的输入,我们都计算mini_batch的均值以及方差,并利用这个均值与方差对输入进行标准化

正则化(Regularization):

控制神经网络过拟合的方法之一

L2正则化:

对每个权重w,我们都向Loss中添加一项\frac{1}{2}\lambda w^2,系数为\frac{1}{2} 是因为这样子梯度的系数就为1了,L2正则化的直观理解是它对大数值的权重向量进行严厉的乘法,倾向于更加分散的权重向量,使网络更倾向于使用所有输入特征,而不是严重依赖于输入特征中的某些小部分特征

使用L2正则化意味着所有的权重梯度都会有一个以w += -\lambda w的线性下降的方向成分

L1正则化:

对每个w我们向Loss加入\lambda |w|,L1正则化会让权重向量在最优化的过程中变得稀疏(非常接近0),也就是说使用L1正则化后,神经元更倾向于使用输入数据中最重要特征所构成的稀疏子集,同时对噪声的输入不敏感。

一般来说L2正则化的效果要优于L1正则化

最大范氏约束(Max norm constraints)

另一种形式的正则化,给每个神经元的权重向量的量级设定上限,并使用投影梯度下降来确保这一约束,即||\vec{w}||_2<c,其中c为常数,一般为3或4,这种正则化有一个好处,在学习率设置过高的时候,网络中也不会出现数值爆炸,因为参数更新始终被限制

随机失活(Dropout):

非常简单且有效的正则化方法

实现方法:在训练时,让神经元以p(超参数)的概率被激活或者设置为0(失活)

在训练过程中,可以认为是对完整的神经网络中抽样出一些子集,每次基于输入数据只更新子网络的参数(但子网络并不是相互独立的,它们都共享参数)

在测试过程中,不再使用随机失活,而是使用整个神经网络进行预测,可以理解为对数量巨大的子网络做了模型集成(model ensemble),从而计算出一个平均的预测

前向传播中的噪声:

Dropout属于网络在前向传播中具有随机行为的方法,则会对真实分布产生一定的噪声,可以通过分析法、数值法将噪声边缘化

分析法:

由于Dropout只在训练时进行随机失活,导致每个神经元对其接受的输入x的期望是px。则在预测的时候,不再随机失活,为了保证神经元能够复现之前训练的环境,来保证其预测的正确性,需要将其接受的每个输入x乘上一个系数p,从而保证同样的预测期望输出

数值法:

抽样出很多的子网络,随机选择不同的子网络进行前向传播,最后对他们的预测取平均值

损失函数:

属性分类:

之前讲到的损失公式的前提,都是假设每个样本只有一个正确的标签,但如果每个样本都可以有或没有多个标签,且标签之间互不排斥呢?

这种情况下,我们需要为每个属性创立一个独立的二分类的分类器,并都对其采用一个Loss函数,最后将这多个Loss函数求和

或者,我们可以对每种属性训练一种独立的逻辑回归分类器

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

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

相关文章

C++ 中实现 `Task::WhenAll` 和 `Task::WhenAny` 的两种方案

&#x1f4da; C 中实现 Task::WhenAll 和 Task::WhenAny 的两种方案 引用&#xff1a; 拈朵微笑的花 想一番人世變換 到頭來輸贏又何妨日與夜互消長 富與貴難久長 今早的容顏老於昨晚C 标准库异步编程示例&#xff08;一&#xff09;C TAP&#xff08;基于任务的异步编程…

【学习】Codeforces Global Round 15 C. Maximize the Intersections

题意&#xff1a;给出一个圆&#xff0c;顺时针排布1~2*n&#xff0c;已知连了k条边&#xff0c;问这个圆最好情况下有多少个线的交点&#xff0c;要求线与线之间不能有重复的连接点&#xff0c;也就是每个点只能被一条线连接 思路&#xff1a; 1.考虑没有线的时候&#xff0…

图论:Dijkstra算法

昨天介绍了最小生成树的两个算法&#xff0c;最小生成树的两个算法旨在求解无向有权图中的最小代价联通图的问题&#xff0c;那么对于有向有权图&#xff0c;从起点到终点的最小花费代价问题就可以用 Dijkstra 算法来解决而且Dijkstra算法可以求出来从起始点开始到所有节点的最…

WPFC#超市管理系统(2)顾客管理、供应商管理、用户管理

超市管理系统3. 顾客管理3.1 顾客新增3.2 DataGrid样式3.3 顾客删除3.4 顾客修改4. 供应商管理4.1 供应商管理主界面4.2 新增供应商4.3 修改供应商5. 用户管理5.1 用户管理主界面5.2 新增用户5.3 修改用户总结3. 顾客管理 在CustomerView.xaml使用命令绑定方式添加页面加载Loa…

Windows本地部署DeepSeek

1、Ollama1、下载Ollama安装包https://ollama.com/download&#xff08;如果下载很慢 可以直接找我拿安装包&#xff09;2、使用命令行安装打开cmd 将下载的安装包OllamaSetup.exe 放到想要安装的目录下。&#xff08;如果直接双击&#xff0c;会装到C盘&#xff09;例如想装到…

基于Python的新闻爬虫:实时追踪行业动态

引言 在信息时代&#xff0c;行业动态瞬息万变。金融从业者需要实时了解政策变化&#xff0c;科技公司需要跟踪技术趋势&#xff0c;市场营销人员需要掌握竞品动向。传统的人工信息收集方式效率低下&#xff0c;难以满足实时性需求。Python爬虫技术为解决这一问题提供了高效方…

阿里视频直播解决方案VS(MediaMTX + WebRTC) 流媒体解决方案

背景&#xff1a; 公司采购了新的摄像头&#xff0c;通过rtsp或者rtmp推流到云平台&#xff0c;云平台内部进行转码处理&#xff0c;客户端使用HLS或HTTP-FLV播放&#xff0c;移动App可能使用HLS或私有SDK&#xff0c;超低延时则采用WebRTC。 技术选型&#xff1a; RTSP&…

day33:零基础学嵌入式之网络——TCP并发服务器

一、服务器1.服务器分类单循环服务器&#xff1a;只能处理一个客户端任务的服务器并发服务器&#xff1a;可同时处理多个客户端任务的服务器二、TCP并发服务器的构建1.如何构建&#xff1f;&#xff08;1&#xff09;多进程&#xff08;每一次创建都非常耗时耗空间&#xff0c;…

VR全景制作的流程?VR全景制作可以用在哪些领域?

VR全景制作的流程&#xff1f;VR全景制作可以用在哪些领域&#xff1f;VR全景制作&#xff1a;流程、应用与未来虚拟现实&#xff08;VR&#xff09;全景制作正迅速改变我们的感官体验&#xff0c;使我们能够身临其境地探索虚拟世界&#xff0c;享受沉浸式的奇妙感受。那么&…

用LangChain重构客服系统:腾讯云向量数据库+GPT-4o实战

人们眼中的天才之所以卓越非凡&#xff0c;并非天资超人一等而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成超凡的必要条件。———— 马尔科姆格拉德威尔 目录 一、传统客服系统痛点与重构价值 1.1 传统方案瓶颈分析 1.2 新方案技术突破点 二、系统架构设计&…

主要分布在腹侧海马体(vHPC)CA1区域(vCA1)的混合调谐细胞(mixed-tuning cells)对NLP中的深层语义分析的积极影响和启示

腹侧海马体CA1区&#xff08;vCA1&#xff09;的混合调谐细胞&#xff08;mixed-tuning cells&#xff09;通过整合情感、社会关系、空间概念等多模态信息&#xff0c;形成动态的情景化语义表征&#xff0c;为自然语言处理&#xff08;NLP&#xff09;的深层语义分析提供了重要…

ESP32的ADF详解:6. Audio Processing的API

一、Downmix 1. 核心功能 将基础音频流和新加入音频流混合为单一输出流&#xff0c;支持动态增益控制和状态转换。输出声道数与基础音频一致&#xff0c;新加入音频自动转换声道匹配。2. 关键特性声道处理 输出声道数 基础音频声道数新加入音频自动转换声道&#xff08;如立体…

Qt(基本组件和基本窗口类)

一、基本组件1. Designer设计师为什么要上来先将这个东西呢&#xff0c;这个是QT外置的设计界面的工具&#xff0c;没啥用&#xff0c;所以了解一下。我们用的多的是QT内置的界面设计&#xff0c;只需要我们双击我们创建的项目的.ui文件就可以进入这个界面&#xff0c;你对界面…

docker与k8s的容器数据卷

Docker容器数据卷 特性 docker镜像由多个只读层叠加而成&#xff0c;启动容器时&#xff0c;Docker会加载只读镜像层并在镜像栈顶部添加一个读写层。如果运行中的容器修改了现有的一个已经存在的文件&#xff0c;那么该文件将会从读写层下面的只读层复制到读写层&#xff0c;该…

自然语言处理技术应用领域深度解析:从理论到实践的全面探索

1. 引言:自然语言处理的技术革命与应用前景 自然语言处理(Natural Language Processing,NLP)作为人工智能领域的核心分支,正在以前所未有的速度改变着我们的数字化生活。从最初的规则基础系统到如今基于深度学习的大语言模型,NLP技术经历了从理论探索到实际应用的深刻变…

OpenGLRender开发记录(二): 阴影(shadowMap,PCF,PCSS)

目录已实现功能阴影shadowMapPCFPCSS实现shadowMapPCFPCSS阴影GitHub主页&#xff1a;https://github.com/sdpyy1 OpenGLRender:https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 已实现功能 除了上次实现IBL之外&#xff0c;项目目前新增了imGUI的渲染&#xff0c;更方便…

Linux:日志乱码

1、Linux日志乱码可能是XShell客户端编码没设置为UTF-8引起的&#xff0c;按照以下步骤&#xff0c;设置终端格式&#xff1a;中文版&#xff1a;打开Xshell会话属性&#xff08;文件→属性→终端→编码&#xff09;&#xff0c;选择与服务器一致的编码格式&#xff08;如UTF-8…

Rouge:面向摘要自动评估的召回导向型指标——原理、演进与应用全景

“以n-gram重叠量化文本生成质量&#xff0c;为摘要评估提供可计算标尺” Rouge&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09; 是由 南加州大学信息科学研究所&#xff08;ISI&#xff09;的Chin-Yew Lin 于2004年提出的自动文本摘要评估指标&am…

[STM32][HAL]stm32wbxx 超声波测距模块实现(HY-SRF05)

前言 在电子技术应用中,距离测量是一个常见且重要的需求。超声波模块因其测量精度较高、成本较低、易于使用等优点,被广泛应用于机器人避障、液位检测、智能停车系统等领域。该文主要讲解以stm32wb芯片为主控,用HAL库来对HY-SRF05超声波模块进行代码编写,实现基本的驱动和测…

MySQL 性能调优实战指南:从诊断到优化全解析

引言在日常的数据库运维工作中&#xff0c;我们经常需要对 MySQL 数据库进行诊断和性能分析。本文将介绍一套全面的 MySQL 诊断脚本&#xff0c;适用于 MySQL 8.0&#xff08;兼容 8.0.15 及以上版本&#xff09;&#xff0c;涵盖事务锁分析、性能瓶颈定位、配置检查、连接状态…