1. 随时间反向传播BPTT(BackPropagation Through Time, BPTT) RNN(循环神经网络)是一种具有长时记忆能力的神经网络模型,被广泛用于序列标注问题.一个典型的RNN结构图如下所示: 从图中可以看到,一个RNN通常由三小层组成,分别是输入层.隐藏层和输出层.与一般的神经网络不同的是,RNN的隐藏层存在一条有向反馈边,正是这种反馈机制赋予了RNN记忆能力.要理解左边的图可能有点难度,我们将其展开成右边的这种更加直观的形式,其中RNN的每个神经元接受当前时刻的输入…
前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它.虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好.而本文的主要目的是介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和MLP的bp算法本质上相同,但形式上还是有些区别的,很显然在完成CNN反向传播前了解bp算法是必须的.本文的实验部分是参考斯坦福UFLDL新教程UFLDL:Exercise: Convolutional Ne…
往期回顾 在上一篇文章中,我们已经掌握了机器学习的基本套路,对模型.目标函数.优化算法这些概念有了一定程度的理解,而且已经会训练单个的感知器或者线性单元了.在这篇文章中,我们将把这些单独的单元按照一定的规则相互连接在一起形成神经网络,从而奇迹般的获得了强大的学习能力.我们还将介绍这种网络的训练算法:反向传播算法.最后,我们依然用代码实现一个神经网络.如果您能坚持到本文的结尾,将会看到我们用自己实现的神经网络去识别手写数字.现在请做好准备,您即将双手触及到深度学习的大门. 神经元 神经元和感知器本…
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正…
1. 深度学习流程简介 1)一次性设置(One time setup)          -激活函数(Activation functions) - 数据预处理(Data Preprocessing) - 权重初始化(Weight Initialization) - 正则化(Regularization:避免过拟合的一种技术) - 梯度检查(Gradient checking) 2)动态训练(Training dynamics)          - 跟踪学习过程 (Babysitting th…
http://www.cnblogs.com/charlotte77/p/5629865.html http://www.cnblogs.com/daniel-D/archive/2013/06/03/3116278.html http://deeplearning.stanford.edu/wiki/index.php/%E5%8F%8D%E5%90%91%E4%BC%A0%E5%AF%BC%E7%AE%97%E6%B3%95 http://blog.csdn.net/zjccoder/art…
导读 目前采用编码器-解码器 (Encode-Decode) 结构的模型非常热门,是因为它在许多领域较其他的传统模型方法都取得了更好的结果.这种结构的模型通常将输入序列编码成一个固定长度的向量表示,对于长度较短的输入序列而言,该模型能够学习出对应合理的向量表示.然而,这种模型存在的问题在于:当输入序列非常长时,模型难以学到合理的向量表示. 在这篇博文中,我们将探索加入LSTM/RNN模型中的attention机制是如何克服传统编码器-解码器结构存在的问题的. 通过阅读这篇博文,你将会学习到: 传…
一.softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是: $$  S_i = \frac{e^j }{ \sum\nolimits_{j} e^j}  \tag{1}$$ 更形象的如下图表示: softmax直白来说就是将原来输出是3,1,-3通过softmax函数一作用,就映射成为(0,1)的值,而这些值的累和为1(满足概率…
前向计算:没啥好说的,一层一层套着算就完事了 y = f( ... f( Wlayer2T f( Wlayer1Tx ) ) ) 反向求导:链式法则 单独看一个神经元的计算,z (就是logit)对 wi 的偏微分等于 xi : 再看多层的情况,z 经过 激活函数得到 a,而 a 在下一层和 w3 .w4 都进行了计算.所以 C 对 z 求偏微分的话,根据链式法则这两条参数的路径都要去找,且 z' 对 a 的偏微分等于w3,z'' 对 a 的偏微分等于w4 : 到这里重点来了,想象有一个不存在神…
https://blog.csdn.net/zouxy09/article/details/9993371 自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己的理解也会更深,另一方面也方便未来自己的勘察.更好的还可以放到博客上面与大家交流.因为基础有限,所以对论文的一些理解可能不太正确,还望大家不吝指正交流,谢谢. 本文的论文来自: Notes on Convolutio…
在神经网络中,激活函数决定来自给定输入集的节点的输出,其中非线性激活函数允许网络复制复杂的非线性行为.正如绝大多数神经网络借助某种形式的梯度下降进行优化,激活函数需要是可微分(或者至少是几乎完全可微分的).此外,复杂的激活函数也许产生一些梯度消失或爆炸的问题.因此,神经网络倾向于部署若干个特定的激活函数(identity.sigmoid.ReLU 及其变体). 下面是 26 个激活函数的图示及其一阶导数,图的右侧是一些与神经网络相关的属性. 1. Step 激活函数 Step 更倾向于理论而不是…
循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有持久性的. 传统的神经网络并不能如此,这似乎是一个主要的缺点.例如,假设你在看一场电影,你想对电影里的每一个场景进行分类.传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类. 循环神经网络(Recurrent Neural Networks)解决了这个问题.这种神经网络带有环,可以将信息…
http://colah.github.io/posts/2015-08-Backprop/ http://www.zhihu.com/question/27239198 待翻译 http://blog.csdn.net/woxincd/article/details/7040944 对于我们的函数J(θ)求偏导J: 下面是更新的过程,也就是θi会向着梯度最小的方向进行减少.θi表示更新之前的值,-后面的部分表示按梯度方向减少的量,α表示步长,也就是每次按照梯度减少的方向变化多少.  一个很重要…
损失函数(loss function)是用来估量你模型的预测值f(x)与真实值Y的不一致程度,它是一个非负实值函数,通常使用L(Y, f(x))来表示,损失函数越小,模型的鲁棒性就越好.损失函数是经验风险函数的核心部分,也是结构风险函数重要组成部分.模型的结构风险函数包括了经验风险项和正则项,通常可以表示成如下式子: θ∗=argminθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ)θ∗=arg⁡minθ1N∑i=1NL(yi,f(xi;θ))+λ Φ(θ) 其中,前面的均值函数表示的是…
word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了很多人的关注.由于 word2vec 的作者 Tomas Mikolov 在两篇相关的论文 [3,4] 中并没有谈及太多算法细节,因而在一定程度上增加了这个工具包的神秘感.一些按捺不住的人于是选择了通过解剖源代码的方式来一窥究竟,出于好奇,我也成为了他们中的一员.读完代码后,觉得收获颇多,整理成文,给有需要的朋友参考. 目录 (一)目录和前言(二)预备知识(三)背…
前言 近年来,在自然语言研究领域中,评测问题越来越受到广泛的重视,可以说,评测是整个自然语言领域最核心和关键的部分.而机器翻译评价对于机器翻译的研究和发展具有重要意义:机器翻译系统的开发者可以通过评测得知系统存在的问题而不断改进,用户也可以根据评测报告选择满足自己需求的产品,而对于机器翻译的研究人员来说,评测能够给他们的技术发展方向提供最可靠的依据. ——摘自北京邮电大学信息工程系张剑博士在微软亚洲研究院访问期间完成的一篇论文中的一段话. 早在90年代初,美国国家自然基金委员会和欧盟就资助的国际…
矩阵奇异值的物理意义是什么?如何更好地理解奇异值分解?下面我们用图片的例子来扼要分析. 矩阵的奇异值是一个数学意义上的概念,一般是由奇异值分解(Singular Value Decomposition,简称SVD分解)得到.如果要问奇异值表示什么物理意义,那么就必须考虑在不同的实际工程应用中奇异值所对应的含义.下面先尽量避开严格的数学符号推导,直观的从一张图片出发,让我们来看看奇异值代表什么意义. 这是女神上野树里(Ueno Juri)的一张照片,像素为高度450*宽度333.<i…
本文主要是学习下Linear Decoder已经在大图片中经常采用的技术convolution和pooling,分别参考网页http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial中对应的章节部分. Linear Decoders: 以三层的稀疏编码神经网络而言,在sparse autoencoder中的输出层满足下面的公式: 从公式中可以看出,a3的输出值是f函数的输出,而在普通的sparse autoencoder中f函数一…
目录 一.引言 1.什么是.为什么需要深度学习 2.简单的机器学习算法对数据表示的依赖 3.深度学习的历史趋势 最早的人工神经网络:旨在模拟生物学习的计算模型 神经网络第二次浪潮:联结主义connectionism 神经网络的突破 二.线性代数 1. 标量.向量.矩阵和张量的一般表示方法 2. 矩阵和向量的特殊运算 3. 线性相关和生成子空间 I. 方程的解问题 II. 思路 III. 结论 IV.求解方式 4. 范数norm I. 定义和要求 II. 常用的\(L^2\)范数和平方\(L^2\…
网上有很多Simple RNN的BPTT(Backpropagation through time,随时间反向传播)算法推导.下面用自己的记号整理一下. 我之前有个习惯是用下标表示样本序号,这里不能再这样表示了,因为下标需要用做表示时刻. 典型的Simple RNN结构如下: 图片来源:[3] 约定一下记号: 输入序列 $\textbf x_{(1:T)} =(\textbf x_1,\textbf x_2,...,\textbf x_T)$ : 标记序列 $\textbf y_{(1:T)}…
前言: CNN作为DL中最成功的模型之一,有必要对其更进一步研究它.虽然在前面的博文Stacked CNN简单介绍中有大概介绍过CNN的使用,不过那是有个前提的:CNN中的参数必须已提前学习好.而本文的主要目的是介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和MLP的bp算法本质上相同,但形式上还是有些区别的,很显然在完成CNN反向传播前了解bp算法是必须的.本文的实验部分是参考斯坦福UFLDL新教程UFLDL:Exercise: Convolutional Ne…
在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域. 1. RNN概述 在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的.但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不…
A note on matrix implementations 将J对softmax的权重W和每一个word vector进行求导: 尽量使用矩阵运算(向量化).不要使用for loop. 模型训练中有两个开销比較大的运算:矩阵乘法f=Wx和指数函数exp Softmax(=logistic regression) is not very powerful softmax仅仅是在原来的向量空间中给出了一些linear decision boundary(线性决策线),在小的数据集上有非常好的r…
背景 反向传播(Backpropagation)是训练神经网络最通用的方法之一,网上有许多文章尝试解释反向传播是如何工作的,但是很少有包括真实数字的例子,这篇博文尝试通过离散的数据解释它是怎样工作的. Python实现的反向传播 你能使用Python来实现反向传播,我曾经在this Github repo上实现了反向传播算法. 反向传播的可视化 显示神经网络学习时相互作用的可视化,检查我的Neural Network visualization. 另外的资源 如果你发现这个教程对你有用并且想继续…
课程笔记 Coursera—Andrew Ng机器学习—课程笔记 Lecture 9_Neural Networks learning 作业说明 Exercise 4,Week 5,实现反向传播 backpropagation神经网络算法, 对图片中手写数字 0-9 进行识别. 数据集 :ex4data1.mat.手写数字图片数据,5000个样例.每张图片20px * 20px,也就是一共400个特征.数据集X维度为5000 * 400 ex4weights.mat.神经网络每一层的权重. 文件…
0 引言 Marvin是普林斯顿视觉实验室(PrincetonVision)于2015年提出的轻量化GPU加速的多维深度学习网络框架.该框架采用纯c/c++编写,除了cuda和cudnn以外,不依赖其他库,编译非常简单,功能也相当强大,用于深度神经网络的快速原型开发非常好用.缺点在于没有提供API,所有的代码集中在marvin.hpp一个文件中,读起来非常困难.好在提供了视频格式的PPT,对框架和代码进行解读.下面将基于官网视频/ppt对该框架进行介绍. 1 相关链接 不想看我翻译的同学可以直接…
A Statistical View of Deep Learning (IV): Recurrent Nets and Dynamical Systems Recurrent neural networks (RNNs) are now established as one of the key tools in the machine learning toolbox for handling large-scale sequence data. The ability to specify…
5.1循环序列模型 觉得有用的话,欢迎一起讨论相互学习~Follow Me 1.3循环神经网络模型 为什么不使用标准的神经网络 假如将九个单词组成的序列作为输入,通过普通的神经网网络输出输出序列, 在不同的例子中输入数据和输出数据具有不同的长度,即每个数据不会有一样的长度 也许每个语句都有最大长度,能够通过Padding 的方式填充数据,但总体来说不是一个好的表达方式. 不共享从文本的不同位置上学到的特征 例如普通神经网络可以学习到Harry这个单词出现在\(x^{<1>}\)的位置,但是如果…
关于 RNN 循环神经网络的反向传播求导 本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证. RNN 神经网络架构 一个普通的 RNN 神经网络如下图所示: 其中 \(x^{\langle t \rangle}\) 表示某一个输入数据在 \(t\) 时刻的输入:\(a^{\langle t \rangle}\) 表示神经网络在 \(t\) 时刻时的hidden state,也就是要传送到 \(t+1\) 时刻的值:\…
李宏毅老师的机器学习课程和吴恩达老师的机器学习课程都是都是ML和DL非常好的入门资料,在YouTube.网易云课堂.B站都能观看到相应的课程视频,接下来这一系列的博客我都将记录老师上课的笔记以及自己对这些知识内容的理解与补充.(本笔记配合李宏毅老师的视频一起使用效果更佳!) Lecture 6: Brief Introduction of Deep Learning 本节课主要围绕Deep Learing三步骤: (1)function set (2)goodness of function (…