avatar
Articles
829
Tags
252
Categories
168

Yan 的杂物志_个人主页分享
Search
几种词嵌入方法
Created2020-06-28|2_Note0_Technic2_算法6_自然语言Embedding
几种词嵌入方法 在自然语言处理中常常使用词嵌入。先来看看词嵌入是什么,以及为什么使用词嵌入。 为什么要使用词嵌入 以中文为例,词库中至少包括几千个字,几万个词,将其代入模型时,如果使用 onehot 编码,则变量有成千上万个维度,参数数量和计算量都非常庞大;且无法计算词间的近似性,无法使用“类比”方法将学到的规则泛化到近义词上,也不利于进一步的迁移学习。 词嵌入可将词的特征映射到较低的维度,比如用 200 维特征描述词库中所有的词,使用模型参数更少,训练更快。 词嵌入可视为给每个组一个 n 维的编码,能某一维度可能描述词性,另一维度描述感情色彩;用特征描述取代符号描述,类似于机器视觉中使用深度网络提取图片的基本特征。也便于对比、泛化、以及知识迁移。比如使用大量自然语言数据训练了足够好的词表征,在具体任务中使用少量实例 fine-tune 和 pretrain 训练好的词嵌入数据训练模型。模型对于 fine-tune 训练集中从未出现,但在词嵌入中出现的词也能有很好效果,从而实现知识迁移。 除了作为特征提取器,还可通过词嵌入实现运算,比如:男 - 女=国王 - 王后,因此可通过国王 - ...
RNN循环神经网络公式总结
Created2020-06-23|2_Note0_Technic2_算法5_模型结构网络结构
RNN 循环神经网络公式总结 RNN 网络 RNN 模型计算分为两步,第一步,计算第t个时间步的隐藏层a;第二步,计算 t 步的预测值y。 其中 Wax 和 Waa 两组参数分别与前一层的激活 a 和当前数据 x 结合,也可将其合二为一,并与 x 和 a 的连接计算。 在 RNN 网络中最常用激活函数是 tanh,有时也用 ReLU,一般只在最后一层使用 sigmoid 或 softmax。 LSTM 网络 相对于基础的 RNN,LSTM 增加了 c(Cell)状态单元,可将其看做在计算激活 a 的过程中保存的当前状态。它与 a 都在工作过程中一直向下一步传递。 公式中的Γ表示门控 gate,门控使用 sigmoid 函数计算得出 0-1 之间的值,用于过滤(保留或去掉)数据。LSTM 中增加的门控分别是:遗忘门 f,输入门 i 和输出门 o,它们分别控制在更新当前 cell 内容时,之前的 cell 占比,当前的 cell 占比,以及如何用 cell 生成a。 举个简单的例子:用 LSTM 生成文字,当输入“回车”时,说明本段已结束,之前的内容被遗忘门丢弃;当前输入是“笑脸”时 ...
风格迁移
Created2020-06-21|2_Note0_Technic2_算法8_图形图像
风格迁移 风格迁移应用非常有趣,通过风格迁移也可以看到深层网络如何在不同层次提取特征。 可以看到,不只是颜色发生了变化,边缘,色块,对比度,甚至是笔触­都转换成了明显的绘画效果. 《吴恩达深度学习》第四课第四周练习是一段风格迁移程序填空,编程语言为 Keras,做完后感觉理解了细节的具体实现,但整体搭建框架和数据流向还比较糊涂。于是使用 Pytorch 又实现了一遍。下面列出此过程中的一些收获。 如何使用预训练模型生成图片 例程中涉及三张图片,一张提供内容C,一张提供风格G,目标是生成新图片N,新图片可以从白噪声开始,也可以与内容图片一致。与对抗生成网络不同的是,风格迁移并不使用从小图逐渐放大的方法生成数据,而是将图N的 Tensor 设置成 requires_grad=True,然后通过梯度调整图片内容,类似于梯度攻击中生成对模型更有攻击性的数据。 如何结合风格和内容 误差函数由两部分组成,一部分是 C 内容与 N 内容的差异,另一部分是 G 风格与 N 风格的差异,内容差异比较简单,只需要计算某一层两图输出的距离即可。风格被定义为,同一层各个通道之间的关系,比如在 CNN 第 ...
搭建TensorFlow的GPUDocker环境
Created2020-06-19|2_Note0_Technic0_工具Docker
搭建 TensorFlow 的 GPU Docker 环境 推荐的基础镜像列表 https://tianchi.aliyun.com/forum/postDetail?postId=67720 TensorFlow 的 GPU 镜像 12$ docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:latest-cuda10.0-py3$ nvidia-docker run --shm-size 8G --rm -v /exports:/exports -it registry.cn-shanghai.aliyuncs.com/tcc-public/tensorflow:latest-cuda10.0-py3 bash 在镜像中安装其它软件 (最好先更新软件源/root/.pip/pip.conf, /etc/apt/sources.list,以便更快下载) 进入 docker 内部 1$ pip install pandas sklearn lightgbm catboost 说明 如需使用 GPU 的镜像 ...
Pytorch手工实现ResNet50
Created2020-06-19|2_Note0_Technic3_编程Pytorch
用 Pytorch 手工实现 ResNet50 《吴恩达深度学习课程》第四课第二周的作业是:使用 Keras 和 Tensorflow 编写 ResNet50,用程序实现题目中描述的网络结构。由于程序填空提供了不少示例,做完后仍感觉理解不透彻,又使用 Pytorch 实现了一遍。 ResNet50 包含 49 个卷积层和 1 个全连接层,属于较大型的网络,实现起来略有难度。对于理解数据流、卷积层、残差、瓶颈层,以及对大型网络的编写和调试都有很大帮助。 使用的数据仍是第四课第二周中的手势图片识别,题目说明、Keras 例程和相关数据可从以下网址下载:https://blog.csdn.net/u013733326/article/details/80250818 Keras ResNet50 程序填空的代码可从以下网址下载:https://github.com/Kulbear/deep-learning-coursera/blob/master/Convolutional%20Neural%20Networks/Residual%20Networks%20-%20v1.ipynb Tor ...
卷积网络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 ...
1…495051…83
avatar
Yan.xie
顺流而下还是逆流而上?
Articles
829
Tags
252
Categories
168
Follow Me
Announcement
This is my Blog
Recent Post
对谈_250610_抑郁2_少年的困境2025-07-07
对谈_250610_抑郁3_边缘叛逃者2025-07-07
对谈_250616_抑郁4_不合适的目标2025-07-07
对谈_250618_抑郁5_反刍2025-07-07
对谈_250530_钻空子2025-07-07
Categories
  • 0_IMO76
    • 工作1
    • 说给一个人听75
      • 01_自我建构29
        • 实修3
        • 思考与觉悟14
        • 行动与进化12
      • 02_情绪心理16
Tags
深度学习/扩散模型 知识管理 关系 禅宗 抑郁 健康 图形图像 关系反转 宗教 视频生成 驱动 开源项目 模型增强 大型语言模型 区块链 数学 社会学 移动开发 自然语言处理/BERT 语音 自我表达 技巧 价值观 技术 深度学习/工具 阅读心理学 深度学习/知识蒸馏 哲学 主题笔记 代码模型 心理建设 权力结构 编程语言/Java 后端测试 主观能动性 AI功能 算法实战 自然语言处理 代码生成 无代码开发
Archives
  • July 202520
  • June 202539
  • May 202530
  • April 202516
  • March 202512
  • February 20252
  • January 20256
  • December 20242
Info
Article :
829
Total Count :
1147.7k
UV :
PV :
Last Push :
©2020 - 2025 By Yan.xie
Framework Hexo|Theme Butterfly
京公网安备11010802043346号
京ICP备2023029600号-1
Search
Loading the Database