神经网络(13)--具体实现:random initialization

Θ应初始化为什么值

当我们是用logistic regression算法时,将θ初始化为0是可以的;但是如果在神经网络里面,将θ初始化为0是不可行的

若将Θ初始化为0的后果-the problem of symmetry ways

当Θ初始化为0后,蓝色线上的两个weights是相等的,红色线上的两个weights也是相等的,绿色线上的两个weights也是相等的,这样a1(2)=a2(2),同样δ1(2)2(2),然后对的两个蓝色线上的Θ求导后值也相等,即经过一次update后,a1(2)仍然与a2(2)相等.假设我们有很多个hidden units,则它们的值都是相等的,这样对于output layer来说,是等同于同一个feature的,会引起很大的冗余,引起的问题称为the problem of symmetry ways。

Θ应如何初始化-symmetry breaking

rand(10,11)创建一个10*11的矩阵,其中每个数都是在0到1之间的随机数,这个里面的EPSILON与我们之前讲的做gradient checking时的EPSILON是没有关系的,这里用EPSILON表示只是表示一个很接近于0的初始值。

总结

  1. 通过将Θ初始化为随机的接近于0的随机数矩阵来break symmetry(对称)。
  2. 先通过gradient check来检查back propagation(这个后面是用来计算导数的)是否正确,如若正确,则初始化Θ,通过gradient descent或者advanced algorithmn来寻找使cost function的值最小的Θ的值。
时间: 2024-08-17 04:12:35

神经网络(13)--具体实现:random initialization的相关文章

Random Initialization for K-Means

K-Means的中心初始化惯用方式是随机初始化.也就是说:从training set中随机挑选出K个 作为中心,再进行下一步的K-Means算法. 这个方法很容易导致收敛到局部最优解,当簇个个数(K)较小(2<K<10)时,我们可以重复 多次K-Means,记录下他们的每个的cost function的值(如下图),其中cost function最小的便是 最优聚类结果了.   

使用神经网络来识别手写数字【转译】(二)

A simple network to classify handwritten digits Having defined neural networks, let's return to handwriting recognition. We can split the problem of recognizing handwritten digits into two sub-problems. First, we'd like a way of breaking an image con

神经网络的学习 Neural Networks learing

1.一些基本符号 2.COST函数 ================Backpropagation Algorithm============= 1.要计算的东西 2.向前传递向量图,但为了计算上图的偏导,要用到后向传递算法 3.后向传递算法 4.小题目 ==============Backpropagation Intuition============== 1.前向计算与后向计算很类似 2.仅考虑一个例子,COST函数化简 3.倒着算theta =======Implementation N

神经网络详解 Detailed neural network

神经网络之BP算法,梯度检验,参数随机初始化 neural network(BackPropagation algorithm,gradient checking,random initialization) 一.代价函数(cost function) 对于训练集,代价函数(cost function)定义为: 其中红色方框圈起的部分为正则项,k:输出单元个数即classes个数,L:神经网络总层数,:第层的单元数(不包括偏置单元),:表示第层边上的权重. 二.误差逆传播(BackPropaga

使用神经网络来识别手写数字【译(三)- 用Python代码实现

实现我们分类数字的网络 好,让我们使用随机梯度下降和 MNIST训练数据来写一个程序来学习怎样失败手写数字. 我们也难怪Python (2.7) 来实现.只有 74 行代码!我们需要的第一个东西是 MNIST数据.如果有 github 账号,你可以将这些代码库克隆下来, git clone https://github.com/mnielsen/neural-networks-and-deep-learning.git 或者你可以到这里 下载. Incidentally, 当我先前说到 MNIS

Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning

原文见http://blog.csdn.net/abcjennifer/article/details/7758797,加入了一些自己的理解 本栏目(Machine learning)包含单參数的线性回归.多參数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学习系统设计.SVM(Support Vector Machines 支持向量机).聚类.降维.异常检測.大规模机器学习等章节.全部内容均来自Standford

【HowTo ML】分类问题-&gt;神经网络入门

非线性分类器(Non-linear hypotheses) 为什么使用非线性分类器 我们举几个栗子: 假如我们有一个数据空间如左上角坐标系所示,那么我们要的模型需要如右边公式所示的预测函数. 假设有n个特征那么计算二次多项式就有O(n^2)的复杂度.n能有多大?我们来看下面这个栗子. 假设我们需要识别汽车,假如选取图像上两个点,那么就如左边坐标系所示,这没什么. 但实际上我们需要的数据空间时整张图片所有的像素.也就是假设图像是50?50那么我们就有2500个像素点.也就是需要2500个特征. 刚

进一步聊聊weight initialization

深度学习模型训练的过程本质是对weight(即参数W)进行更新,这需要每个参数有相应的初始值. 有人可能会说:"参数初始化有什么难点?直接将所有weight初始化为0或者初始化为随机数!" 对一些简单的机器学习模型,或当optimization function是convex function时,这些简单的方法确实有效. 然而对于深度学习而言,非线性函数被疯狂叠加,这便是一个非凸函数,如何选择参数初始值便成为一个值得探讨的问题. 研究的目的是:选择更适合的初始化方法,使得目标函数更容易

深度学习原理与框架-神经网络-cifar10分类(代码)

cifar神经网络的代码说明: 数据主要分为三部分: 第一部分:数据的准备 第二部分:神经网络模型的构造,返回loss和梯度值 第三部分:将数据与模型输入到函数中,用于进行模型的训练,同时进行验证集的预测,来判断验证集的预测结果,保留最好的验证集结果的参数组合 第一部分:数据的准备 第一步:构造列表,使用with open() as f: pickle.load进行数据的载入, 使用.reshape(1000, 3, 32, 32).transpose(0, 3, 1, 2).astype('f