Deep Learning = Learning Hierarchical Representations 深度学习即学习层次的表征。 1. 首次提出应用多层简单或者复杂的细胞结构建模,特征:手工加无监督聚类学习。无反向传播。 1.3 卷积神经网络分解 通用的CNN架构能被分解为以下几个基本结构。 (in_channels=1, out_channels=n_feature, kernel_size=5) self.conv2 = nn.Conv2d(n_feature, n_feature (x, kernel_size=2) # (12*12*n_feature) x = self.conv2(x) # 12-5+1 = 8 (8*8*n_feature) x = F.relu(x) x = F.max_pool2d(x, kernel_size=2) # (4*4*n_feature)这里解释了上面全连接时为啥是4*4
深度工作是一项技能,是一种状态。它是需要刻意练习才能获得的。无论是学习新知识,还是解决复杂问题。保持专注,才能得到最大产出。 有一部分是这些人的深度工作时间间隔更短。就算被打断后,也能立马进入深度工作状态。但这种人很少,要做到这点非常难。更多的还是,工作特性决定了深度工作带来的效果。 我这里有2个观点,不知道你支持哪一个?或者你也可以说说自己的观点。 1、开放办公对团队是一种整体的深度工作,大家相互协作,不仅工作效率高,沟通还能带来新的创新思路。 2、开放办公确实提高了沟通效率,但白天都把时间用来沟通了。用于个人深度工作的时间就少了。这也导致了很多人晚上一个人加班才能完成任务。 我更倾向于第一种。 我理解的深度工作是一种状态,在某些场景下需要极度地专注,那种大部分需要自己去创造的高价值任务,适合深度工作去执行。如果是需要外部配合的话,那必须把沟通也当做深度工作的一部分。沟通并不能当做打断。
3.3 超参数 3.3.1 什么是超参数 超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。 通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。 超参数通常在于: 定义关于模型的更高层次的概念,如复杂性或学习能力。 步骤2和步骤3交替迭代,最终确定模型的参数和超参数,在测试集中验证评价模型的优劣。 其中,搜索过程需要搜索算法,一般有:网格搜索、随机搜索、启发式智能搜索、贝叶斯搜索。 函数图像如下: 2. tanh 激活函数 函数的定义为: ,值域为 。 函数图像如下: 3. Relu 激活函数 函数的定义为: ,值域为 [0,+∞)。 函数图像如下: 4. 它告诉我们权重学习的速度受到 ,也就是输出中的误差的控制。更⼤的误差,更快的学习速度。这是我们直觉上期待的结果。特别地,这个代价函数还避免了像在⼆次代价函数中类似⽅程中 导致的学习缓慢。
1、CUDA(compute unified device architecture)可用于并行计算: GTX1060 CUDA核心数:1280 显存大小:6G 2、随机梯度下降:计算偏导数需要的计算量很大 4、归一化: 一般采用线性函数归一化(max-min)、0均值标准化(z-score standardization),在深度学习中,常见的是使用batch-normalization,这样可以让网络尽可能避免没有数据 L1正则化项即采用L1范数,L2正则化就是所有权重的平方之和。 结构化风险与经验风险可视化 7、其他超参数:有一些值需要在算法训练之前设定,无法通过学习获得,这就需要经验获得或者进行一定的预估、尝试。 比如深度学习中的学习率,K-means算法中的簇数k. 8、Dropout:方法的目的在于克制过拟合状态,由于网络VC维很高,记忆能力很强,所以有些细枝末节的特征也会被网络记忆,从而削弱网络整体的泛化性能
, input_size] X = tf.reshape(_X, shape=[-1, timestep_size, input_size]) # 单层LSTM RNN # 2. 0][:, -1, :] output_bw = outputs[1][:, -1, :] output = tf.concat([output_fw, output_bw], 1) 深度 RNN Deep Bidirectional RNN(深度双向RNN)类似Bidirectional RNN,区别在于每 个每一步的输入有多层网络,这样的话该网络便具有更加强大的表达能力和学习 能力,但是复杂性也提高了 深度RNN网络构建的代码如下: #多层 def lstm_call(): cell = tf.nn.rnn_cell.LSTMCell(num_units=hidden_size
在Tensorflow中,为了方便管理,在内存队列前又添加了一层所谓的“文件名队列” 机器学习中一个概念是epoch,对于一个数据集来讲,运行一个epoch就是将这个数据集中的图片全部计算一遍。 如果要运行2个epoch而不是1个epoch,在文件名队列中将A、B、C依次放入两次再标记结束就可以了。 数据增强 深度学习通常会要求拥有充足数量的训练样本,一般来说,数据的总量越多,训练得到的模型效果会越好。 深度残差模型的优势在于使用了跳过链接,让神经网络从拟合F(x)变成拟合F(x)-x。残差比原始函数更容易学习,也更适合深层模型迭代,因此,即使训练非常深的神经网络也不会发生非常严重的过拟合。
深度学习利器之自动微分(2) 0x00 摘要 本文和上文以 Automatic Differentiation in Machine Learning: a Survey为基础,逐步分析自动微分这个机器学习的基础利器 因为我们已经了解了深度学习,所以从深度学习角度来看,前向模式只需要完成计算出计算图中各节点的值。求导数则可以由反向模式来实现。 01】什么是(机器/深度)学习? 【深度学习之美15】如何感性认识损失函数? 【深度学习之美18】到底什么是梯度? 【深度学习之美21】BP算法详解之前向传播 【深度学习之美22】BP算法详解之链式法则 【深度学习之美23】BP算法详解之反向传播 【深度学习理论】一文搞透梯度下降Gradient descent 梯度下降算法
参考链接: Python机器学习中的seq2seq模型 http://blog.csdn.net/pipisorry/article/details/78258198 Seq2seq模型 seq2seq 基本的seq2seq模型包含了两个RNN,解码器和编码器,最基础的Seq2Seq模型包含了三个部分,即Encoder、Decoder以及连接两者的中间状态向量State Vector,Encoder通过学习输入 ,将其编码成一个固定大小的状态向量S,继而将S传给Decoder,Decoder再通过对状态向量S的学习来进行输出。 这是在seq2seq_model.py的get_batch()函数中完成的,其也会反转英语的输入。正如Sutskever所说,这有助于改善机器学习后的结果。 Query Rewriting Model with Multi-task Learning] [深度学习:注意力模型Attention Model] 代码实现及示例 seq2seq有多种多样的形式
option 2 会是更好的选择: 2.5 不匹配数据划分的偏差和方差 对于三个不同的问题(不匹配数据或者说数据不是相同分布,偏差和方差),我们有不同的策略。 为了判断是那种问题,我将 train 和 dev 的合并称为 training-dev,根据人类误差和不同数据集下的误差来判断是什么问题: 总结来说: 2.6 定位数据不匹配 如: 2.7 迁移学习 总结: 2.8 多任务学习 当label向量中的某项y不存在,则不计算该项的交叉熵损失。 多任务学习的适用情况: 左边的是迁移学习的数据情况,右边的多任务学习的。 2.9 什么是端到端的深度学习 例如: 2.10 是否要使用端到端的深度学习 端到端的深度学习的优缺点: 使用端到端的深度学习需要注意的地方:
文章目录 11.2 迁移学习的基本思路有哪些 11.2.1 基于样本迁移 11.2.2 基于特征迁移 11.2.3 基于模型迁移 11.2.4 基于关系迁移 11.2 迁移学习的基本思路有哪些 迁移学习的基本方法可以分为四种 ] 和远域迁移学习 (Distant Domain Transfer Learning,DDTL) [Tan et al.,2017],利用联合矩阵分解和深度神经网络,将迁移学习应用于多个不相似的领域之间的知识共享 .,2012], 然后利用传统的机器学习方法进行分类识别。根据特征的同构和异构性,又可以分为同构和异构迁移学习。图15很形象地表示了两种基于特征的迁移学习方法。 图15 基于特征的迁移学习方法示意图 基于特征的迁移学习方法是迁移学习领域中最热门的研究方法,这类方法通常假设源域和目标域之间有一些交叉的特征。 .,2017]改进了深度网络结构,通过在网络中加入概率分布适配层,进一步提高了深度迁移学习网络对于大数据的泛化能力。
1.背景介绍 在上篇深度学习经典网络解析(一):LeNet-5中我们提到,LeNet-5创造了卷积神经网络,但是LeNet-5并没有把CNN发扬光大,是CNN真正开始走进人们视野的是今天要介绍的—— Hinton),Hinton在上一篇博客我们也曾介绍过,他是深度学习之父,在人工智能寒冬时期,Hinton一直就默默地坚持深度网络的方向,终于在2006年的《Science》上提出了DNN,为如今深度学习的繁荣奠定了基础 2012年在解决ImageNet挑战方面取得了巨大的突破,被广泛认为是2010年的深度学习革命的开始。 3.AlexNet 3.1AlexNet简介 AlexNet是在LeNet的基础上加深了网络的结构,学习更丰富更高维的图像特征。 3.3.4 Local Responce Normalization(NORM层) LRN是一种提高深度学习准确度的技术方法。LRN一般是在激活、池化函数后的一种方法。
1.2.3 Detectron2 使用Conda(推荐! : git clone https://github.com/facebookresearch/detectron2.git python -m pip install -e detectron2 或者 2. return dataset_dicts 2.3 可视化工具 import random import cv2 from detectron2.data import MetadataCatalog from detectron2.config import get_cfg import detectron2.data.transforms as T from detectron2.model_zoo
我们回忆深度学习“三板斧”: 1. 选择神经网络 2. 定义神经网络的好坏 3. 选择最好的参数集合 其中步骤三,如何选择神经网络的好坏呢? 梯度下降是目前,最有效的方法之一。 方法:我们举两个参数的例子 θ1、θ2, 损失函数是L。那么它的梯度是: 那我为了求得最小值,我们有: 参数不断被梯度乘以学习率η 迭代 那么上述公示公为什么是减号,不是加号呢? Learning rate学习率的设定 Learning Rate η 如果设定不好,Loss反而增大 自适应的学习率 adaptive learning rate 很多小伙伴在机器学习代码中,学习率一般都是设置为一个固定的数值 根据学习经验,一般的我们有如下结论: 1. 训练刚开始的时候,学习率较大 2. 、深度学习求解Optimal问题的“普世”方法,但是也会遇到很多问题,例如local minima 和 saddle point 的问题。
作者 | Chilia 整理 | NewBeeNLP 首先,请阅读先修知识: 深度学习基础 | 从Language Model到RNN 深度学习基础 | RNN家族全面解析 1. Seq2seq 1.1 seq2seq的训练 可以看出,整个seq2seq模型分为两大部分:Encoder RNN和Decoder RNN。 例如,当选择k = 2时,翻译 il a'm' entarte: <START>后面概率最大的两个词是"I"和"he",概率的log值分别为-0.9和-0.7。 1.3 seq2seq 的其他应用 文本摘要 (长文本->短文本) 对话(previous utterance->next utterance) 代码生成(自然语言->python代码),当然这个太难了 这里所谓的“相似度”就是用两者的1-gram, 2-gram… n-gram重合度来算的。
01激活函数概览 基本上,入门深度学习的第一件事情就是了解”神经元”的构造,激活函数算是最基本的一个”部件”了吧.那激活函数到底有什么用呢?为什么需要激活函数?激活函数的定义是什么呢? . 1.sigmoid 老朋友了,但是还是要介绍一下,sigmod算是”曾经”使用最广的激活函数了,简单,良好的非线性映射,但是也有致命的问题,就是梯度消失.所以现代的神经网络架构很少用他了. 2. PReLU是对于LReLU的改进,可以自适应的学习参数而不是固定的,原论文中建议初始化为0.25. RReLU的a是一个给定范围内的随机变量,随机选择的,在一定程度上可以起到正则化的作用.
目前深度学习被应用到很多领域,如NLP,Vision,Speech recognize等等,往往在某个领域的效果好的深度神经网络不能直接应用在其他领域中. 这里我们只是对w进行了一个正则化,因为w的维度相对于b来说比较大,所以b可以忽略 我们把||w [l] || 2 ||w[l]||2 称为Frobenius范数,记为||w [l] || 2 F 。 所以,一般L2 regularization更加常用。 1.6 dropout regularizationn Dropout是指在深度学习网络的训练过程中,对于每层的神经元,按照一定的概率将其暂时从网络中丢弃。 对其进行梯度下降算法时,由于w1和w2数值差异很大,只能选择很小的学习因子 α ,来避免J发生振荡。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
在深度学习中,无论是做哪项任务,图像、文本或是声音,都涉及到数据的处理,而数据通常包含在数据集中paddle当中有两个重要的类是和数据集相关的:Dataset和DataLoader【Dataset】它位于 当我们使用索引操作符 [] 时,实际上是调用了 __getitem__ 函数__getitem__ 函数接收一个索引作为参数,并返回对应索引位置的数据样本2. DataLoader】它被定义在paddle.io.DataLoader,负责在模型训练过程中高效地加载和批处理数据DataLoader的一个重要作用是可以批量的从数据集中取出数据,方便程序进行并行计算,这极大了提高了深度学习程序的运行效率 labels=[0,1,0,0,1,0]mydata=MyDataset(data,labels)dataloader = paddle.io.DataLoader(mydata, batch_size=2, shuffle=True)for batch in dataloader: print(batch)可以看到,因为设置batchsize=2,每次会取出2组数据而shuffle=True使得数据的顺序被打乱了这里显示我们的数据类型是
深度学习的起源 深度学习(Deep Learning)是机器学习中一个非常接近AI的领域,其动机在于建立、模拟人脑进行分析学习的神经网络。深度学习属于无监督学习。 深度学习的核心思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I=>S1=>S2=>….. 深度学习的动机 学习基于深度架构的学习算法的主要动机是: ①不充分的深度是有害的; 在许多情形中深度2就足够(比如logicalgates, formal[threshold] neurons 在后者中Hastad说明了但深度是d时,函数族可以被有效地(紧地)使用O(n)个节点(对于n个输入)来表示,但是如果深度被限制为d-1,则需要指数数量的节点数O(2^n)。 图2 DBN模型 区分性深度结构 目的是提供对模式分类的区分性能力,通常描述数据的后验分布。
深度学习中普遍的做法是将softmax作为最后一层,此时常用的代价函数是对数似然代价函数。对数似然代价函数与softmax的组合和交叉熵与sigmoid函数的组合非常相似。 其实作为损失函数的似然函数并不关心你当前的机器学习model的参数是怎样的,毕竟它此时所接收的输入只有两部分:1、predict;2、label。3、分布模型(predict服从的分布)。 代表x的第i个元素,比如x=类别3时,x1=0,x2=0,x3=1,x4=0。 想一下,机器学习model对某个样本的输出,就代表各个类别发生的概率。 (2)为什么要用交叉熵 交叉熵函数权值 和偏置 的梯度推导为: 由以上公式可知,权重学习的速度受到 影响,更大的误差,就有更快的学习速度,避免了二次代价函数方程中因 导致的学习缓慢的情况。 (2)在求解机器学习算法的模型参数,即无约束优化问题时,主要有梯度下降法(Gradient Descent)和最小二乘法。