
深度学习
五道口纳什
wx公众号/B站:五道口纳什
展开
-
激励函数对比分析
1. 极性sigmoid:单极性;单极性信号,就是或只有正信号,或只有负信号。tanh:双极性;双极性信号,就是既有正信号,也有负信号。原创 2017-03-02 17:28:17 · 2846 阅读 · 0 评论 -
机器学习/深度学习测试题(二)—— 单层线性神经网络求解异或问题
1. 输入样本的处理听起来似乎是一个比较奇怪的说法,不对输入做任何处理的话,是无法求解异或问题的。这里提供一种对输入进行处理的可行方式:对输入样本做必要的升维处理,其实质是引入非线性分量。如下图所示: X = [0, 0, 0; 0, 1, 1; 1, 0, 1; 1, 1, 0]; % 行表示样本,包含输入值和目原创 2017-03-02 10:42:08 · 3201 阅读 · 0 评论 -
神经网络的 Delta 学习规则(learning rule)
1. δ\delta 学习规则1986 年,由认知心理学家 McClelland 和 Rumellhart 在神经网络训练中引入了 Δ\Delta 学习规则,该规则亦可称为连续感知器学习规则(与离散感知器学习规则相并行)。Δ\Delta 规则的学习信号规定为如下形式原创 2017-03-02 09:30:38 · 18547 阅读 · 1 评论 -
机器学习/深度学习测试题(一) —— 单层感知器的激活函数
问,更换单层感知器的激活函数(比如改为 tanh\tanh 函数),能否使模型具有解决非线性分类问题的能力。tanh(s)=exp(s)−exp(−s)exp(s)+exp(−s)\tanh(s)=\frac{\exp(s)-\exp(-s)}{\exp(s)+\exp(-s)}可知,tanh\tanh 过原点,在 s>0s > 0 时,tanh>0\tanh > 0,s<0s < 0 时,ta原创 2017-03-01 23:09:52 · 2654 阅读 · 1 评论 -
深度学习基础(三)—— 权值矩阵的初始化
权值矩阵初始化的方式与激励函数的类型有关:对于 隐层 ii:tanh\tanh 型激励函数对称区间上的均匀分布:[−6fanin+fanout−−−−−−−−√,6fanin+fanout−−−−−−−−√][-\sqrt{\frac6{fan_{in}+fan_{out}}}, \sqrt{\frac6{fan_{in}+fan_{out}}}]sigmoid\text{sigmoid} 型激原创 2016-04-26 23:07:13 · 8018 阅读 · 0 评论 -
matlab 深度学习
1. AutoencoderTrain Stacked Autoencoders for Image Classification(能可视化反而更好)2. 网络结构的定义(使用结构体与元祖的基本形式)% 6c-2s-12c-2s 的 cnncnn.layers = { struct('type', 'i') struct('type', 'c', 'outputmaps', 6原创 2016-11-17 11:12:26 · 1375 阅读 · 0 评论 -
深度学习实践指南(六)—— ReLU(前向和后向过程)
def relu_forward(x): out = x * (x > 0) # * 对于 np.ndarray 而言表示 handmard 积,x > 0 得到的 0和1 构成的矩阵 return out, x传递回去的 x 作为反向传递时会用到的中间变量也即 cache原创 2017-02-17 10:37:57 · 3463 阅读 · 1 评论 -
深度学习实践指南(五)—— 求解异或问题
def neuron(w, x): return原创 2016-05-18 12:14:38 · 3874 阅读 · 0 评论 -
深度学习基础(一) —— softmax 及 logsoftmax
softmax:重新定义了多层神经网络的输出层(output layer),注意仅和输出层有关系,和其他层无关。我们知道在神经网络的前馈(feedforward)的过程中,输出层的输入(input)为: zLj=∑kwLjk⋅aL−1k+bLjz_j^L=\sum_{k}w_{jk}^L\cdot a_{k}^{L-1}+b_j^L在 softmax 的机制中,为获得输出层的输出(也即最终的原创 2016-04-26 10:04:10 · 27878 阅读 · 4 评论 -
深度神经网络面临的挑战与解决方案
模型选择(structural decision)主观性的领域知识(domain knowledge):针对图像的CNN,卷积神经网络模型。模型复杂度(model complexity)正则化(regularization)技术:dropout:when network corrupted 网络结构本身被破坏时denoising:when input corrupted输入信息被污染原创 2015-12-08 10:53:41 · 1867 阅读 · 0 评论 -
深度学习的并行问题
1. weight sharing 通过指向同一内存地址来共享参数;因此可以极大地降低参数的规模;CNNs/RNNs 的核心构成;原创 2016-12-30 15:56:46 · 1486 阅读 · 0 评论 -
机器学习、深度神经网络的认识与结论
关于validation_data机器学习(监督学习)有关的数据:training datatest datavalidation dataInstead of using the test_data to prevent overfitting, we will use the validation_data.也即我们使用validation_data避免过拟合,而不是使用test_dat原创 2015-12-07 20:39:46 · 3737 阅读 · 0 评论 -
从 Jacobian 矩阵、Hessian 矩阵到 Theano 实现
T.grad(cost, wrt),一般接收两个参数,第一个参数表示需要求导的函数,放在深度学习的背景下就是代价函数,wrt(with respect to)表示代价函数所关于的参数(通俗地讲,就叫自变量,f(x)f(x)表示关于xx的函数ff)。T.grad的第一个参数必须是标量。>>> import thenao>>> import theano.tensor as T>>> x = T.d原创 2015-12-09 11:34:40 · 4007 阅读 · 0 评论 -
theano 安装杂记
1. cudahttps://developer.nvidia.com/cuda-downloads:选择合适的平台,环境以及版本;2. .theanorc.txt版本之一:[global]openmp = False[blas]ldflags =[gcc]cxxflags = -IC:\MinGW\includereferences Win7配置CUDA并搭建基于Theano框架的GPU原创 2016-11-23 21:39:39 · 954 阅读 · 0 评论 -
深度学习(tensorflow+keras)性能问题
0. benchmarkGitHub - pascanur/DeepLearningBenchmarks1. CPU vs GPU 多层感知机网络,使用 SGD 优化算法,应用于手写字符识别问题;784(28*28)的输入,500 个隐层,10 分类问题;原创 2016-11-23 18:15:30 · 1154 阅读 · 0 评论 -
神经网络的理解
1. 模型的理解能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述和定义这种映射关系的数学方程。2. BP 反向传播BP:error Back Propagation,反向传播的是误差(d−od-o)3. 人工神经网络的拓扑结构 第一种网络会用在普通的 BP 神经网络,有可叫多层前馈神经网络;第四种网络会用在 Hopfield 网络中;原创 2017-03-02 10:59:43 · 1316 阅读 · 0 评论 -
Hopfield 神经网络及稳态性的证明
根据其提出者,John Joseph Hopfield 命名。Hopfield 在 1982 年提出的划时代的:Neural networks and physical systems with emergent collective computational abilities 一文。顾名思义,从论文的名字中我们就可看出,Hopfield 神经网络是将物理学的相关思想(动力学)引入到神经网络的构原创 2016-11-07 12:19:43 · 3737 阅读 · 1 评论 -
深度学习实践指南(三)—— 参数(超参)及数据集的处理
(1)maximum number of epochs(2)learning rates(3)network architecture原创 2016-04-29 00:09:21 · 1852 阅读 · 0 评论 -
深度学习实战 Tricks —— 梯度消失与梯度爆炸(gradient exploding)
1. 梯度消失与梯度爆炸gradient clipping 梯度爆炸:min(grad_max,grad) grad_max:梯度上限梯度消失:max(grad_min, grad) grad_min:梯度下限;原创 2016-10-26 16:52:15 · 1448 阅读 · 0 评论 -
theano 编程细节
Theano中的theano.shared()与C++中的std::shared_ptr面向对象深度神经网络构造函数(也即\__init__)的使命是搭建舞台(该神经网络一共多少层,这些层的输入与输出,激励函数,每一层的属性),构造整个Architecture,它不负责运算,优化事宜。theano_rng vs numpy_rngimport numpyimport原创 2015-12-08 16:26:15 · 1107 阅读 · 0 评论 -
卷积操作中的矩阵乘法(gemm)—— 为什么矩阵乘法是深度学习的核心所在
1. 全连接 kk 个输入;nn 个神经元; 每个神经元都会学到一组权值向量,以和输入进行内积运算;nn 个输出;2. 卷积卷积操作对于高维(多个平面)的输入,单个卷积核的深度应和输入的深度(depth)保持一致: 3 维卷积运算执行完毕,得一个 2 维的平面: 注,nn 个3维卷积核以得到 nn 个 feature maps;3. 卷积操作中的矩阵乘法按 [kernel_原创 2017-07-08 16:49:06 · 19327 阅读 · 2 评论 -
算法直观与对模型的理解
Radial Basis Function Networklinear aggregation of distance-based similarities using k-means clustering for prototype finding一堆similarities,一堆similarities的线性组合(linear combination)。这些similarities又根据距离(d原创 2015-12-21 20:36:35 · 2013 阅读 · 0 评论 -
从 RNN 到 LSTM (Short-Term Memory)
1. variant:GRU(gated recurrent unit)原创 2016-11-28 23:37:50 · 1387 阅读 · 0 评论 -
循环神经网络(RNN)
所谓的平行语料,比如中文到英文的这样一种对等翻译;无论 CNN 还是 RNN,LSTM,既然是深度学习,也即较深的网络层次,显然训练将是一个十分耗时的过程,所要学习的参数的数量将十分可观,如果不对网络的拓扑结构以及训练方法进行适当的优化的话,显然在实际中将是十分不可行。CNN:图像 conv+maxpooling:共享参数RNN:模拟 sequence to sequence 的学习 既然原创 2016-11-06 22:03:54 · 1824 阅读 · 0 评论 -
Batch Normalization
通过 Batch Normalization 的方式 normalize 神经网络层的输入,以解决的 internal covariate shift 问题。原创 2017-04-15 16:25:15 · 973 阅读 · 0 评论 -
目标识别(object detection)中的 IoU(Intersection over Union)
首先直观上来看 IoU 的计算公式: 由上述图示可知,IoU 的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域。两个矩形窗格分别表示: 左上点、右下点的坐标联合标识了一块矩形区域(bounding box),因此计算两块 Overlapping 的 bounding boxes 的 IoU 如下:# ((x1[i], y1[i]),原创 2017-05-04 23:51:10 · 15205 阅读 · 4 评论 -
非极大值抑制(non-maximum suppression)的理解与实现
RCNN 和微软提出的 SPP_net 等著名的目标检测模型,在算法具体的实施过程中,一般都会用到 non-maximum suppress(非最大值抑制,抑制即忽略, 也即忽略那些值(IoU)高于提供的阈值的) 的机制。原创 2017-05-05 17:40:37 · 16823 阅读 · 4 评论 -
GAN(Generative Adversarial Networks) 初步
首先需要指出的是生成式模型(generative models)和判别式模型(discriminative models)的区别:discriminative models:根据训练样本直接学习 p(y|x)p(y|x)generative models:首先学习特征向量与标签的联合概率分布 p(x,y)p(x,y),再通过贝叶斯规则,转换为 p(y|x)原创 2017-04-19 11:46:34 · 1370 阅读 · 0 评论 -
Batch Normalization 反向传播(backpropagation )公式的推导
What does the gradient flowing through batch normalization looks like ?反向传播梯度下降权值参数更新公式的推导全依赖于复合函数求梯度时的链式法则。原创 2017-04-15 22:35:35 · 6078 阅读 · 1 评论 -
卷积神经网络(CNN)的理解与总结
卷积神经网络模型的历史演化: 0. 核心思想two main ideas: use only local features在不同位置上使用同样的特征;池化层的涵义在于,更高的层次能捕捉图像中更大的范围和区域;1. feature map依然是 feature map(特征映射),再次可见,深度神经网络其实就是一种 feature learning 框架。如何获取一幅图像(输入图像)的原创 2016-11-02 16:25:22 · 2321 阅读 · 0 评论 -
从 BM 到 RBM
如下图示,在拓扑结构上,RBM(受限的玻尔兹曼机)与 BM(玻尔兹曼机)的最大区别在于: RBM 取消了可见层的层内连接以及隐含层的层内连接,主要在于 BM 的层内连接使得其学习过程相当耗时;DBN爬坑记之RBM原创 2017-04-03 23:19:56 · 3048 阅读 · 0 评论 -
深度学习基础(七)—— Gibbs 采样
仅知道概率密度是不狗的,需要的是样本,gibbs sampling 就是获取样本的。Gibbs 抽样是一种基于 MCMC(Markov Chain Monte Carlo)策略的抽样方法,具体来说对于一个 dd 维的随机向量 X=(x1,x2,…,xd)X=(x_1,x_2,\ldots,x_d),但是我们无法直接求出 XX 的概率分布 p(X)p(X),但我们知道给定的 XX 的其他分量关于第原创 2016-04-28 22:11:13 · 6362 阅读 · 0 评论 -
GANs(生成对抗网络)初步
1. 基本思路首先定义一个简单的、常见的概率分布,将其表示为 pzp_z,不妨将其作为 [-1, 1] 上的均匀分布。z∼pzz\sim p_z 则表示从该分布中的一次采样过程。如果 pzp_z 是五维的话,则可通过如下语句实现:z = np.random.uniform(-1, 1, 5)原创 2017-03-17 12:22:04 · 1197 阅读 · 0 评论 -
熵的理解(玻尔兹曼分布)
log2n\log_2n(以 2 为底的对数):用二进制数来表达不同的状态组合需要多少个二进制位;1. 物理的解释一个密封系统中,装有许多气体粒子(分子),共有 NN 个粒子(由于是密封,不会增加也不会减少),假设系统内部的温度为 TT,系统内的分子有两种状态,ϵ0,ϵ1\epsilon_0,\epsilon_1(前者表示低能量的状态,后者表示高能量的状态),处在 \espsilon0\esp原创 2016-11-10 17:36:51 · 9692 阅读 · 3 评论 -
用 theano 求解 Logistic Regression (SGD 优化算法)
1. model这里待求解的是一个 binary logistic regression,它是一个分类模型,参数是权值矩阵 W和偏置向量 b。该模型所要估计的是概率 P(Y=1|x),简记为 pp,表示样本 x 属于类别 y=1y=1 的概原创 2016-11-22 13:09:12 · 1454 阅读 · 0 评论 -
theano —— shared, function(outputs, updates, givens)
>>> import theano >>> import theano.tensor as T >>> state = theano.shared(0) >>> type(state)theano.tensor.sharedvar.ScalarSharedVariable>>> state.get_value(borrow=True)原创 2015-12-07 15:45:12 · 2345 阅读 · 0 评论 -
Linux 下非 root 用户安装 theano(配置 GPU)
非 root 用户,安装 Python 第三方的包,尤其像 theano,存在大量的依赖项,存在的主要问题,是安装各个包时的权限问题。所幸,存在这样一个集成工具,叫 anaconda,其已经内置了许多 Python 库,安装 theano 之前,只需安装 theano。原创 2016-11-19 17:47:06 · 1962 阅读 · 0 评论 -
深度学习实践指南(一)—— 卷积和池化
详细信息请见 Convolutional Neural Networks (LeNet)卷积:from theano.tensor.nnet import conv2d池化from theano.tensor.signal.downsample import max_pool_2d卷积import numpy as npimport theanoimport theano.tensor a原创 2016-04-27 10:22:03 · 1378 阅读 · 0 评论 -
深度学习实践指南(二)—— 符号编程
参数化模型(parameterized model)是符号(symbol 或者叫 variable)编程的基石,参数对应与符号编程的符号。首先定义符号,也即变量,直接对符号进行数学运算刻画符号间的关系,最终得到输入与输出的关系(在 theano 中,由一张 graph 刻画),这种从输入到输出,交由 theano.function(inputs=, outputs=) 定义,theano.funct原创 2016-04-27 11:01:47 · 1439 阅读 · 0 评论 -
深度学习基础(二)—— 从多层感知机(MLP)到卷积神经网络(CNN)
经典的多层感知机(Multi-Layer Perceptron)形式上是全连接(fully-connected)的邻接网络(adjacent network)。 That is, every neuron in the network is connected to every neuron in adjacent layers. Local receptive fields全连接的多层原创 2016-04-26 10:34:41 · 19869 阅读 · 0 评论