avatar
Articles
913
Tags
294
Categories
199

Yan 的杂物志_个人主页分享
Search
卷积网络CNN
Created2020-06-19|2_Note0_Technic2_算法5_模型结构网络结构
卷积网络 CNN 卷积网络是近年来非常流行的网络结构,常用于处理图像(2 维卷积)和自然语言(1 维卷积)。在不明觉厉的情况下使用卷积层,往往使用别人设计的结构,凑参数往模型里塞,同复杂的原理书中的内容又有点对不上号。本篇从应用场景,具体用法入手,深入到每一个重要参数:具体用途、用法及计算方法。 为什么使用卷积网络 先来看看全连接网络的参数: 网络有三个输入 x1,x2,x3 和两个输出 y1,y2,具体计算方法是: 如果 y1 与 x3 没有什么关系,通过训练两者之间的参数 w31 可能趋近于 0,但该连接仍然存在。对于输入为 3 输出为 2 的网络需要训练 32=6 个参数。图片数据非常庞大,如果训练一张 10001000 像素,RGB 三通道的图片,则输入元素有 3M 个,如果第一个隐藏层有 1000 个元素,则需要训练 100010003*1000 个参数,使得网络非常庞大,同时需要非常大量的数据才能避免过拟合。 卷积网络的优势在于共享参数,比如一个 3x3 的检测物体边缘卷积核训练好后,即可用于整个图片,此时需要学习的参数只有 3x3=9 个,如果在一层中训练 20 个 ...
归一化
Created2020-06-14|2_Note0_Technic2_算法5_模型结构工具
归一化 为什么使用归一化 如果输入有多个 feature,且它们的数值范围有很大差异,这样训练时学习率就不能设置得太大,以免大幅调参引发越界。反之,如果各个 feature 有相同的均值和方差,则可使用更高的学习率,使收敛更快。归一化解决了梯度爆炸和梯度消失的问题,使构建更深层的网络成为可能,还避免了梯度爆炸和梯度消失。 使用模型时需要保证训练数据和测试数据同分布。在机器学习中往往对输入数据进行归一化处理,在深度学习中则常对网络的每一层都做归一化处理,以保证每次处理的数据分布一致。这也使得层与层之间更加独立,依赖更小。Batch-Normalize(BN)论文中描述:加入 BN 方法后,模型训练提速 14 倍,且精度也有所提升。 Convariate shift(漂移)问题 从原理上看,归一化缓解了内部协变量的移位问题,即漂移问题。深度神经网络中每一层输入都依赖之前层的输出,在训练的不同阶段,前层输出的分布也不相同。调参幅度越大越可能使分布变化,因此,只能使用较小的学习率,这样又使得收敛变慢。 由调参引发的内部数据分布变化的问题叫做内部协变量的移位问题,也被称作漂移问题。归一化方法可以 ...
深度网络调参
Created2020-06-14|2_Note0_Technic2_算法5_模型结构工具
深度网络调参 重要的超参数 深度学习网络有很多超参数,下面列出了一些比较重要,常常需要调节的超参数。 最重要 学习率 较重要 mini-batch size hidden units 网络层数 动量参数 学习率衰减 算力不同的调参 算力不同、网络规模、数据量不同,也有不同的调参方法,当模型和计算量较小时,可以使用网格调参;在算力足够的情况下,使用多组参数并行训练模型;反之,如果算力不足,且模型和数据较大,可能需要手动调参,比如训练几天之后,手动下调学习率,动量等超参数,人为地逐渐推进训练过程。 网格调参和随机调参 机器学习中常使用网格调参,即将参数列成表格,按一定步长尝试所有组合的参数,这种方法适用于较小的网络。深度学习网络一般较大,训练时间较长,一般使用随机抽取方法,在重点区域进行更多的抽样(密度更大),这样在一开始不确定哪些超参数重要时,可以广撒网,越往后越有针对性,实现从粗到细调参,同时又兼顾各种可能性,以免陷入局部最优值,类似于蒙特卡洛方法。 非线性轴调参 非线性轴调参也是常见的调参问题,比如设置学习率常常是 0.1, 0.01, 0.001, 0.0001…这样就不能 ...
设置BatchSize
Created2020-06-14|2_Note0_Technic2_算法5_模型结构工具
设置 BatchSize BatchSize 是非常重要的超参数,它不仅影响训练速度,也影响模型精度。本篇来讨论如何选择 BatchSize。 BatchSize 是否越大越好? BatchSize 一般指同时代入训练模型的实例个数,最直接的经验是如果 GPU 显存不大,又设置较大的 BatchSize 时直接报错“cuda runtime error(2): out of memory”。 是不是只要机器性能允许,就要设置尽可能大的 Batch size 呢?同时训练多个实例比逐个代入单个实例训练速度又能提高多少? 下图为使用不同的 batchSize,在 LeNet 上训练 mnist 数据的效果,使用的框架为 Theano。 可以看到,使用较大的 batchSize 的确可以提速,但是 batchSize 大到一定程度后,效果并不十分明显。 从图中可以看到如果将所有数据全部代入一次迭代(左图),则在训练集上的代价函数下降比较平滑,如果切分成多个 Batch,代价函数不一定是下降的。这是由于每一个 Batch 中数据的难度不同,造成了代价函数忽大忽小。 如何选择 batch 大 ...
避免过拟合
Created2020-06-14|2_Note0_Technic2_算法5_模型结构工具
避免过拟合 欠拟合和过拟合 欠拟合是指在训练集和测试集(或验证集)上模型效果都不好,一般由于模型能力不足导致;过拟合是指模型在训练集上表现好,而在测试集上表现不好,一般由于模型过度拟合了训练集中的噪声导致。本文主要讨论解决过拟合问题的方法。 L2 正则化 无论机器学习还是深度学习,L2 正则化项都用于限制参数 W 过大,它被累加在代价函数之中。 代价函数J除了计算每个实例的误差L,还加入网络中每层参数W的 2 范数的平方,并用λ作为参数,当λ较大时,就需要W接近0,才能得到较小的代价函数,这样一些无关紧要的参数就变成了0,从而减少了模型的复杂度,以及压缩后模型的规模。另外,较小的W也使层之间传递的数据变小,这样在使用 sigmoid 和 tanh 激活函数时,数据刚好集中在中间类似线性变换的一段,使非线性变换的结果类似线性变换。由于多个线性组合叠加相当于单个线性层,因此也倾向于简化模型。 如果使用 L1 正则化,参数矩阵将变得稀疏,根据经验,一般 L2 效果更好。L2 正则化方法可用于简化决策,但不适用于需要复杂决策的问题。使用该方法时,需要尝试多个λ值。 Dropout 方法 Dr ...
初始化网络参数
Created2020-06-11|2_Note0_Technic2_算法5_模型结构工具
初始化网络参数 #深度学习 为什么要给网络参数赋初值 既然网络参数通过训练得到,那么其初值是否重要?设置初值不佳是否只影响收敛速度而不影响模型结果?网络参数是否可以设置为全 0 或者全 1? 假设网络的参数W初值都是0,如下图所示,无论输入任何X,第一层的输出A将都为0,再向前传递到 y 也是 0,使用误差函数调参时,每一层的梯度只与该层的输入和输出有关,由于 a1,a2 值相等,计算出的梯度调整的值,以及调整后的梯度也相等;第二次迭代也同理,由于 a1,a2 相等,w[2]中各单元的值也相等。因此该层有 100 个单元与 1 个单元没有差异,该问题被称为“对称性”问题。 试想将 w 设置成全 1,则有 a1=x1+x2,a2=x1+x2,a1 与 a2 值仍然相同,对称性问题依然存在。由此,一般将参数设置为随机值。 设置成随机值还不够,还需要设置成较小的随机值,试想如果 w 的均值在 0.5 附近,某一层的输入输出都为 500 个元素,那么经过该层乘和加的运算,输出约是输入值的 250 倍;如果存在多层,250x250x…,很快就爆炸了。如果在层后使用 Sigmoid 函数,将值映 ...
激活函数
Created2020-06-11|2_Note0_Technic2_算法5_模型结构工具
激活函数 为什么使用激活函数 如果没有激活函数,神经网络就变成了线性模型,输出是输入的线性组合,使用一层与使用多层没有区别。如下式所示,输入为 x,经过线性层计算出 a1,将 a1 输入下个线性层得到 a2,展开后可以看出,最终得到的仍然是 wx+b 的线性组合,只是参数值不同。 图片.png 另外,线性层无法解决非线性问题,如在预测房价问题中,如果不使用激活函数,则房价可能计算成负值,这也与实际不符。理论上,加了激活函数后,模型可以逼近任意函数。 激活函数又分线性激活函数和非线性激活函数,一般使用的都是非线性激活函数,线性激活函数与线性层类似,只在输出层偶尔使用,不在此展开讨论。 何时使用激活函数 激活函数一般放置在线性变换之后,在线性变换和激活函数之间,常常插入归一化层,用于解决饱和的非线性激活函数问题(下面 Sigmoid 函数部分详细说明)。 如何选择激活函数 从一些当前流行的深度学习网络代码中,可以看到,当前使用的激活函数绝大部分是 ReLU;在一些特殊情况下,也使用 Sigmoid,比如二分类问题的最后一层使用 Sigmoid 将输出转换到 0-1 之间;又如使用注意 ...
浅析梯度迭代算法
Created2020-06-07|2_Note0_Technic2_算法5_模型结构工具
浅析梯度迭代算法 梯度迭代类算法已成为目前各种领域的主流算法。各种现实中的问题分解抽象成机器可以处理的形式之后,基本都可归类为图像、自然语言处理、决策、时序、强化学习这几种类型,而当今解决这些问题的顶尖算法中,梯度迭代(梯度上升或梯度下降)都占据主流地位,比如决策类问题的比赛中,梯度下降决策树 GBDT 类算法是完全的主流,使用深度学习网络处理图片自然语言问题更毋庸置疑。 那么,梯度迭代算法究竟是什么?简单地说,就是代入数据,预测结果,如果结果偏大就调小参数,结果偏小就调大参数。举一个简单的例子,分为三个小问题: 问题一 假设父亲的智商影响儿子的智商,设父亲的智商为x,儿子的智商为y,y=wx,训练一个参数 w 学习二者之间的关系。目前有多个父子智商数据对,其中第一个数据:父亲智商 x=100,儿子智商 w=110,将 w 初值设为 w=1.0;学习率设为 0.00001,计算平均误差。 如下程序用于学习 w。 123456789101112131415161718192021import torch import matplotlib.pyplot as plt %matplo ...
Pytorch常用函数之一_数据类型
Created2020-06-05|2_Note0_Technic3_编程Pytorch
Pytorch 常用函数之一 _ 数据类型 #Pytorch 编程语言和自然语言一样,不理解的词越多,对全文的理解就越差。掌握必要的基础知识,让后期看代码更加流畅。 机器学习需要掌握数据处理工具 Pandas、Numpy,同理,深度学习也需要掌握相应的工具,在 Pytorch 中数据存储在 Tensor 之中,本篇将介绍它们的基本用法以及与之相关的常用函数。 查看版本信息 包含头文件 11. import torch 1.查看 torch 版本 11. print(torch.__version__) 2.查看 CUDA 版本 11. print(torch.version.cuda) GPU 相关操作 1. 查看当前是否支持 GPU 11. device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') 2.GPU 相关的数据转换 123451. a = torch.Tensor([5]) 2. b = a.to('cuda') # ...
搭建深度学习的docker环境
Created2020-06-04|2_Note0_Technic2_算法5_模型结构环境
搭建深度学习的 docker 环境 介绍 深度学习一般依赖比较复杂的环境,每个项目需要的底层库各有不同,有时在 github 中下载的代码只能运行在版本较低的的工具链之上。想在一台机器上建立适合所有项目的环境非常困难,大多数情况下使用 docker 维护不同项目针对的不同环境。 CUDA 是 NVIDIA 推出的运算平台,一般通过它调用 GPU,CUDA 的主要版本有 7.x, 8.x,9.x,10.x,目前最常用的是 9 和 10,它们对接的上层软件版本也各不相同。如: 1234torch 1.1.0/1.1.0 + torchvision 0.2.* + CUDA 9torch 1.2.0/1.3.0 + torchvision 0.3.* + CUDA 10torch 1.2.0/1.3.0 + torchvision 0.4.* + CUDA 10torch 1.4.0 + torchvision 0.5.* + CUDA 10 除了 CUDA 基础库以外,还需安装相关工具包。可以在同一个操作系统中安装多个 CUDA 版本,使用时切换即可。 在 Docker 中使用 GPU 除 ...
1…585960…92
avatar
Yan.xie
顺流而下还是逆流而上?
Articles
913
Tags
294
Categories
199
Follow Me
Announcement
This is my Blog
Recent Post
FreeCAD用于3D建模2026-01-05
第一次买拓竹 3D 打印机,该选 A1 还是 P2S2026-01-05
3D打印常用软件2026-01-05
3D打印盘清洁与涂胶技巧2026-01-05
玩3D打印花多少钱?从设备到耗材的真实花费2026-01-04
Categories
  • 0_IMO90
    • 工作1
    • 方法1
      • 工作1
    • 说给一个人听88
      • 01_自我建构36
        • 实修3
        • 思考与觉悟17
Tags
版本管理 插件推荐 Agent 生活 深度学习 行为模式 智能家居 宗教 投资 项目管理 Pytorch 视频生成 心理学 自然 菜谱 大模型 数据安全 工作思考 语音 程序员 Paper 卡片 2023年 加密货币 卷积神经网络 多代理系统 多模态 心理调节 指标 模型工具 情绪表达 美食 基金 人生哲学 概率 开发 技术 佛教 社会评价 #论文阅读
Archives
  • January 20266
  • December 202525
  • November 202512
  • October 20259
  • September 20255
  • August 202517
  • July 202538
  • June 202537
Info
Article :
913
Total Count :
1269.4k
UV :
PV :
Last Push :
©2020 - 2026 By Yan.xie
Framework Hexo|Theme Butterfly
京公网安备11010802043346号
京ICP备2023029600号-1
Search
Loading the Database