虽然学深度学习有一段时间了,但是对于一些算法的具体实现还是模糊不清,用了很久也不是很了解.因此特意先对深度学习中的相关基础概念做一下总结.先看看前向传播算法(Forward propagation)与反向传播算法(Back propagation). 1.前向传播 ​​ 如图所示,这里讲得已经很清楚了,前向传播的思想比较简单. 举个例子,假设上一层结点i,j,k,…等一些结点与本层的结点w有连接,那么结点w的值怎么算呢?就是通过上一层的i,j,k等结点以及对应的连接权值进行加权和运算,最终结果再…
在深度神经网络(DNN)模型与前向传播算法中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向传播算法(Back Propagation,BP)做一个总结. 1. DNN反向传播算法要解决的问题 在了解DNN的反向传播算法前,我们先要知道DNN反向传播算法要解决的问题,也就是说,什么时候我们需要这个反向传播算法? 回到我们监督学习的一般问题,假设我们有m个训练样本:$\{(x_1,y_1), (x_2,y_2), ..., (x_m,y_m)\}$,其中$x$为输入向量…
深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础. 回顾监督学习的一般性问题.假设我们有$m$个训练样本$\{(x_1, y_1), (x_2, y_2), …, (x_m, y_m)\}$,其中$x$为输入向量,$y$为输出向量,利用这个训练样本训练模型的参数,使得给定模型一个$x_{test}$,其能够预测$y_{test}$. 采用CNN模型的时候,$x$输入向量全部喂给输入层,$y$输出向量和输出层的向量一起计算损失函数,而其中若干个神经元的隐藏层,每…
[Poj 3107] Godfather 链式前向星+树的重心 题意 http://poj.org/problem?id=3107 给定一棵树,找到所有重心,升序输出,n<=50000. 链式前向星存储图 链式前向星是前向星的升级版本,是一种特殊的边集数组,有n条边,数组开n*2,切记!切记!!(由于要正反两次存边,也就是一条边要存两次),空间利用率高,并且速度比使用vector快,本题使用vector就TLE了一次.. 建立如下结构体: struct node{ int to,next,w;…
最开始学最短路的时候只会用map二维数组存图,那个时候还不知道这就是矩阵存图,也不懂得效率怎么样 经过几个月的历练再回头看最短路的题, 发现图可以用链式前向星来存, 链式前向星的效率是比较高的.对于查找边,可以用优先队列来优化查找速度,两者结合可以提高很高的效率. 写这篇博客是为了给自己提供一个模板, 在自己研究这问题的时候发生了很多, 有一些小细节的错误错的我怀疑人生, 其实还是自己太菜了,包括函数的重载也不懂, 就琢磨了好久 题目链接:http://acm.hdu.edu.cn/showpr…
vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector<Edge> E; vector<int> G[maxn]; void init(int l,int r) { E.clear(); for(int i=l;i<=r;i++) G[i].clear(); } void addedge(int u,int v,int w) { E.pus…
在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Recurrent Neural Networks ,以下简称RNN),它广泛的用于自然语言处理中的语音识别,手写书别以及机器翻译等领域. 1. RNN概述 在前面讲到的DNN和CNN中,训练样本的输入和输出是比较的确定的.但是有一类问题DNN和CNN不好解决,就是训练样本输入是连续的序列,且序列的长短不…
在循环神经网络(RNN)模型与前向反向传播算法中,我们总结了对RNN模型做了总结.由于RNN也有梯度消失的问题,因此很难处理长序列的数据,大牛们对RNN做了改进,得到了RNN的特例LSTM(Long Short-Term Memory),它可以避免常规RNN的梯度消失,因此在工业界得到了广泛的应用.下面我们就对LSTM模型做一个总结. 1. 从RNN到LSTM 在RNN模型里,我们讲到了RNN具有如下的结构,每个序列索引位置t都有一个隐藏状态$h^{(t)}$. 如果我们略去每层都有的$o^{(…
1 BP算法的推导 图1 一个简单的三层神经网络 图1所示是一个简单的三层(两个隐藏层,一个输出层)神经网络结构,假设我们使用这个神经网络来解决二分类问题,我们给这个网络一个输入样本,通过前向运算得到输出.输出值的值域为,例如的值越接近0,代表该样本是"0"类的可能性越大,反之是"1"类的可能性大. 1.1 前向传播的计算 为了便于理解后续的内容,我们需要先搞清楚前向传播的计算过程,以图1所示的内容为例: 输入的样本为: ${\Large \overrightarr…