怎么让写数学题变快啊,我几乎是写一题多变的数学题就要回头看一遍,总是不放心,搞得后面大题都没时间写。

  • 说明自己的性欲在慢慢的减退,可能会有早泄的一些情况发生最好把这种坏习惯给戒掉
    全部

版权声明:本文为博主原创文章转载请注明出处。 /cg/article/details/


以下笔记是吴恩达老师深度学习课程第二门课第一周的的学习笔记:Practical aspects of Deep Learning笔记参考了的内容,在此表示感谢 


今天我们鈳能已经知道:应用深度学习是一个典型的迭代过程。 在建立训练模型的过程中数据集会被划分为以下几个部分:

  • 训练集(train set):用训练集对算法或模型进行训练;
  • 验证集(development set):利用验证集(又称为交叉验证集)进行交叉验证选择出最好的模型
  • 测试集(test set):最后利用测試集对模型进行测试获取模型运行的无偏估计。

在数据量比较少的时候如 100、1000、10000 的数据量大小,可以将数据集按照以下比例进行划分:

洏在如今的大数据时代对于一个问题,我们拥有的数据集的规模可能是百万级别的所以验证集和测试集所占的比重会趋向于变得更小。验证集的目的是为了验证不同的算法哪种更加有效所以验证集只要足够大到能够验证大约 10 种算法哪种更好时,就不需要使用 20% 的数据作為验证集在百万数据中抽取 1 万的数据作为验证集就可以了。

测试集的主要目的是评估模型的效果如在单个分类器中,往往在百万级别嘚数据中我们选择其中 1000 条数据足以评估单个模型的效果。

吴恩达老师在视频中补充到:建议验证集要和训练集来自于同一个分布(数据來源一致)可以使得机器学习算法训练得更快并获得更好的效果。如果不需要用无偏估计来评估模型的性能则可以不需要测试集。


偏差(Bias)和方差(Variance)是机器学习领域非常重要的两个概念和需要解决的问题在传统的机器学习算法中,Bias和Variance是对立的分别对应着欠拟合和過拟合,我们常常需要在Bias和Variance之间进行权衡而在深度学习中,我们可以同时减小Bias和Variance构建最佳神经网络模型。

欠拟合(underfitting)的情况下即絀现高偏差(high bias)的情况,不能很好地对数据进行分类

当模型设置的太复杂时,使得模型出现过拟合(overfitting)的情况在验证集上出现高方差(high variance)现象。

当训练出一个模型以后如果:

  • 训练集的错误率较小,而验证集的错误率却较大说明模型存在较大方差,可能出现了过拟合;
  • 训练集和开发集的错误率都较大且两者相当,说明模型存在较大偏差可能出现了欠拟合;
  • 训练集错误率较大,且开发集的错误率远較训练集大说明方差和偏差都较大,模型很差;
  • 训练集和开发集的错误率都较小且两者的相差也较小,说明方差和偏差都较小这个模型效果比较好。

吴恩达老师在视频中针对偏差和方差问题给出了一些建议:

  • 扩大神经网络规模如添加隐藏层或隐藏单元数目;
  • 寻找合適的网络架构,使用更大的 NN 结构;
  • 寻找更合适的网络结构


正则化是在cost函数中加入一个正则化项,惩罚模型正则化可以用于解决高方差嘚问题。

我们先回顾一下之前介绍的Logistic Regression我们采用的是L2正则化,加入正则化后的cost函数为:

这里我们只对参数进行了正则化处理而不对处理洇为为一个常数,相对来说的维度很大对模型泛化能力的影响很大。

除了L2正则化之外还有另一张正则化方法,L1正则化表达式为:

由於 L1 正则化最后得到 w 向量中将存在大量的 0,使模型变得稀疏化因此 L2 正则化更加常用 。注意lambda在 Python 中属于保留字,所以在编程的时候用lambd代替這里的正则化因子。

在深度学习模型中L2正则化的表达式为:

被称为弗罗贝尼乌斯范数(Frobenius Norm),所以神经网络中的正则化项被称为弗罗贝尼烏斯范数矩阵

加入正则化之后,我们的梯度下降计算变为:

加入正则化之后新的梯度下降公式变为:

可以看见权重衰减,所以L2正则化項也被称为权重衰减



我们都知道正则化可以有效避免过拟合,但为什么可以避免过拟合呢我们举例来说明:下面是欠拟合、刚好拟合囷过拟合的情况。

假如我们选择了非常复杂的神经网络模型如上图左上角所示。在未使用正则化的情况下我们得到的分类超平面可能昰类似上图右侧的过拟合。但是如果使用L2 正则化,当λ很大时,w[l]≈0w[l]近似为零,意味着该神经网络模型中的某些神经元实际的作用很小可以忽略。从效果上来看其实是将某些神经元给忽略掉了。这样原本过于复杂的神经网络模型就变得不那么复杂了而变得非常简单囮了。如下图所示整个简化的神经网络模型变成了一个逻辑回归模型。问题就从high variance变成了high bias了

因此,选择合适大小的λ值,就能够同时避免high bias和high variance得到最佳模型。

假设神经元中使用的激活函数为tanh函数

在加入正则化项后,当 λ 增大导致减小,便会减小由上图可知,在 z 较小(接近于 0)的区域里tanh(z)函数近似线性,所以每层的函数就近似线性函数整个网络就成为一个简单的近似线性的网络,因此不会发生过拟匼


除了L2正则化,还有一种防止过拟合的有效方法:Dropoutdropout(随机失活是在神经网络的隐藏层为每个神经元结点设置一个随机消失的概率,保留下来的神经元形成一个结点较少、规模较小的网络用于训练dropout 正则化较多地被使用在计算机视觉(Computer Vision)领域。下图为概率为0.5的Dropout的正则化唎子

Dropout有不同的实现方法,接下来介绍一种常用的方法:Inverted dropout假设对于第ll层神经元,设定保留神经元比例概率keep_prob=0.8即该层有20%的神经元停止工作。dl为dropout向量设置dl为随机vector,其中80%的元素为120%的元素为0。在python中可以使用如下语句生成dropout vector:

 
最后一步al /= keep_prob 是因为 中的一部分元素失活(相当于被归零)为了在下一层计算时不影响 的期望值,因此除以一个keep_prob 注意,在测试阶段不要使用 dropout因为那样会使得预测结果变得随机。

 

 
Dropout通过每次迭代訓练时随机选择不同的神经元,相当于每次都在不同的神经网络上进行训练类似机器学习中Bagging的方法,能够防止过拟合
对于单个神经え,其接收输入特征并输出但是加入了 dropout 后,输入的特征都存在被随机消失的可能所以该神经元不会再特别依赖于任何一个输入特征,即不会给任何一个输入特征设置太大的权重 因此,通过传播过程dropout 将产生和 L2 正则化相同的收缩权重的效果。
对于不同的层设置的keep_prob也不哃。一般来说神经元较少的层,会设keep_prob为 1.0而神经元多的层则会设置比较小的keep_prob
dropout 的一大缺点是成本函数无法被明确定义因为每次迭代都會随机消除一些神经元结点的影响,因此无法确保成本函数单调递减因此,使用 dropout 时先将keep_prob全部设置为 1.0 后运行代码,确保 函数单调递减洅打开 dropout。

 

 
除了L2 正则化和dropout 正则化之外还有其它减少过拟合的方法。
一种方法是增加训练样本数量但是通常成本较高,难以获得额外的训練样本但是,我们可以对已有的训练样本进行一些处理来“制造”出更多的样本称为data augmentation。例如图片识别问题中可以对已有的图片进行沝平翻转、垂直翻转、任意角度旋转、缩放或扩大等等。如下图所示这些处理都能“制造”出新的训练样本。虽然这些是基于原有样本嘚但是对增大训练样本数量还是有很有帮助的,不需要增加额外成本却能起到防止过拟合的效果。

还有另外一种防止过拟合的方法:early stopping将训练集和验证集进行梯度下降时的成本变化曲线画在同一个坐标轴内,当训练集误差降低但验证集误差升高两者开始发生较大偏差時及时停止迭代,并返回具有最小验证集误差的连接权和阈值以避免过拟合。这种方法的缺点是无法同时达成偏差和方差的最优

 

 
在训練神经网络时,标准化输入可以提高训练的速度标准化输入就是对训练数据集进行归一化的操作,即将原始数据减去其均值μ后,再除以其方差:



为什么使用标准化输入呢我们来看下面这幅图:

有图可知,使用标准化输入前后成本函数的形状有较大改变。
在不使用标准化的成本函数中如果设置一个较小的学习率,可能需要很多次迭代才能到达全局最优解;而如果使用了标准化那么无论从哪个位置開始迭代,都能以相对较少的迭代次数找到全局最优解

 

 
在神经网络尤其是深度神经网络中存在这样一个问题:梯度消失和梯度爆炸。意思是当训练一个层数非常多的神经网络时计算得到的梯度可能非常小或非常大,甚至是指数级别的减小或增大这样会让训练过程变得非常困难。假设存在下面这个每层包含两个神经元的深度神经网络:

假定 对于目标输出有:
对于梯度计算同样。因此在计算梯度时,根据不同情况梯度函数会以指数级递增或递减导致训练梯度难度上升,梯度下降算法的步长会变得非常小需要训练的时间将会非常长。

 

 
下面介绍如何改善梯度消失和梯度爆炸这类问题方法是对权重进行一些初始化处理。、
深度神经网络模型中以单个神经元为例,该層的输入个数为其输出为:

可知,当输入的数量 n 较大时我们希望每个 的值都小一些,这样它们的和得到的 也较小

一种方法是在初始囮w时,令其方差为相应的python伪代码为:

 
如果激活函数是tanh,一般选择上面的初始化方法
 
如果激活函数是ReLU,权重的初始化一般令其方差为:
 
臸于选择哪种初始化方法因人而异可以根据不同的激活函数选择不同方法。另外我们可以对这些初始化方法中设置某些参数,作为超參数通过验证集进行验证,得到最优参数来优化神经网络。

 

 
Back Propagation神经网络有一项重要的测试是梯度检查(gradient checking)其目的是检查验证反向传播過程中梯度下降算法是否正确。
双边误差求导(即导数的定义):


当 ε 越小时结果越接近真实的导数,也就是梯度值可以使用这种方法来判断反向传播进行梯度下降时,是否出现了错误

 

 
介绍完如何近似求出梯度值后,我们将介绍如何进行梯度检查来验证训练过程中昰否出现bugs。
梯度检查首先要做的是分别将全部连接起来构成一个一维向量。 这样成本函数就成为
同时,对 执行同样的操作得到一维向量 它和 有同样的维度。
接着利用对每个计算近似梯度其值与反向传播算法得到的相比较,检查是否一致例如,对于第i个元素近似梯度为:

计算完所有的近似梯度后,计算和的欧氏距离公式如下:

一般来说,如果欧氏距离越小例如,甚至更小则表明反向梯度计算是正确的,没有bugs
如果欧氏距离较大,例如则表明梯度计算可能出现问题,需要再次检查是否有bugs存在
如果欧氏距离很大,例如甚臸更大,则表明梯度下降计算过程有bugs需要仔细检查。

 

 
在进行梯度检查的过程中有几点需要注意的地方:
  • 不要在训练中使用梯度检验它呮用于debug;
  • 如果算法的梯度检验失败,要检查所有项并试着找出 bug;
  • 当成本函数包含正则项时,也需要带上正则项进行检验;
  • 梯度检验不能與 dropout 同时使用因为每次迭代过程中,dropout 会随机消除隐藏层单元的不同子集难以计算 dropout 在梯度下降上的成本函数 J。建议关闭 dropout用梯度检验进行雙重检查,确定在没有 dropout 的情况下算法正确然后打开 dropout;
 

 
本节课主要介绍了深度学习的实践层面
首先我们讲了如何配置训练集验证集和測试集,并如何分析偏差、方差如何处理欠拟合过拟合问题
然后我们介绍了如何在深度神经网络模型中应用不同形式的正则化,如L2囸则化和dropout正则化
最后我们介绍了归一化输入这可以加快神经网络的训练速度,以及梯度检验

原标题:靠刷题学好高中数学已經过时学会这5招,高考数学至少能提20分

数学是高考最能拉开差距的科目如何学好数学也成了首当其冲的要务。老师圈流传着一句话:初中学生学数学靠的是一个字:练!高中学生学数学靠的也是一个字:悟!

有的高一学生觉得老师讲过的已经听明白了。但为什么一做題就困难重重了呢其原因在于,学生对教师所讲的内容的理解还没能达到教师所要求的层次。因此每天在做作业之前,一定要把课夲的有关内容和当天的课堂笔记先看一看

能否坚持如此,常常是好学生与差学生的最大区别尤其练习题不太配套时,作业中往往没有咾师刚刚讲过的题目类型因此不能对比消化。如果自己又不注意对此落实天长日久,就会造成极大损失

学生一定要明确,现在正做著的题一定不是考试的题目。而是要运用现在正做着的题目的解题思路与方法因此,要把自己做过的每道题加以反思总结一下自己嘚收获。

要总结出:这是一道什么内容的题用的是什么方法。做到知识成片问题成串。日久天长构建起一个内容与方法的科学的网絡系统。俗话说:“有钱难买回头看”我们认为,做完作业回头细看,价值极大这个回头看,是学习过程中很重要的一个环节

要看看自己做对了没有;还有什么别的解法;题目处于知识体系中的什么位置;解法的本质什么;题目中的已知与所求能否互换,能否进行適当增删改进有了以上五个回头看,学生的解题能力才能与日俱增投入的时间虽少,效果却很大

有人认为,要想学好数学只要多莋题,功到自然成其实不然。一般说做的题太少很多熟能生巧的问题就会无从谈起。因此应该适当地多做题。但是只顾钻入题海,堆积题目在考试中一般也是难有作为的。

要把提高当成自己的目标要把自己的活动合理地系统地组织起来,要总结反思进行章节總结是非常重要的。初中时是教师替学生做总结高中是自己给自己做总结,怎样做章节总结呢

要把课本,笔记区单元测验试卷,校周末测验试卷都从头到尾阅读一遍。要一边读一边做标记,标明哪些是过一会儿要摘录的要养成一个习惯,在读材料时随时做标记告诉自己下次再读这份材料时的阅读重点。长期保持这个习惯学生就能由博反约,把厚书读成薄书积累起自己的独特的,也就是最適合自己进行复习的材料这样积累起来的资料才有活力,才能用的上

把本章节的内容一分为二,一部分是基础知识一部分是典型问題。要把对技能的要求(对“锯斧,凿子…”的使用总结)列进这两部分中的一部分,不要遗漏

在基础知识的疏理中,要罗列出所學的所有定义定理,法则公式。要做到三会两用即:会代字表述,会图象符号表述会推导证明。同时能从正反两方面对其进行应鼡

把重要的,典型的各种问题进行编队(怎样做“板凳,椅子书架…”)要尽量地把他们分类,找出它们之间的位置关系总结出問题间的来龙去脉。就象我们欣赏一场团体操表演我们不能只盯住一个人看,看他从哪跑到哪都做了些什么动作。我们一定要居高临丅地看看全场的结构和变化。不然的话陷入题海,徒劳无益这一点,是提高高中数学水平的关键所在

总结那些尚未归类的问题,莋为备注进行补充说明

找一份适当的测验试卷。一定要计时测验然后再对照答案,查漏补缺

一定要重视改错工作,做到错不再犯高中数学课没有那么多时间,除了少数几种典型错其它错误,不能一一顾及如果能及时改错,那么错误就可能转变为财富成为不再犯这种错误的预防针。

但是如果不能及时改错,这个错误就将形成一处隐患一处“地雷”,迟早要惹祸有的学生认为,自己考试成績上不去是因为自己做题太粗心。而且自己特爱粗心。打一个比方比如说,学习开汽车右脚下面,往左踩是踩刹车。往右踩昰踩油门。其机械原理设计原因,操作规程都可以讲的清清楚楚如果新司机真正掌握了这一套,请问可以同意他开车上街吗?恐怕怹自己也知道自己还缺乏练习一两次能正确地完成任务,并不能说明永远不出错

练习的数量不够,往往是学生出错的真正原因大家┅定要看到,如果自己的基础背景是地雷密布,隐患无穷那么,今后的数学将是难以学好的

图是初等数学的生命线,能不能用图支撐思维活动是能否学好初等数学的关键无论是几何还是代数,拿到题的第一件事都应该是画图有的时候,一些简单题只要把图画出来答案就直接出来了。遇到难题时就更应该画图图可以清楚地呈现出已知条件。而且解难题时至少一问画一个图这样看起来清晰,做題的时候也好捋顺思路

首先要在脑中有画图的意识,形成条件反射拿到一道数学题就先画图。而且要有用图的意识画了图而不用,等于没画

有了画图、用图的意识后,要具备画图的技能有人说,画图还不简单啊学数学有谁不会画图啊。还真不要小看这一点很哆同学画图没有好习惯,不会用画图工具圆规、尺子不会用,画出图来非常难看不是要求大家把图画的多漂亮,而是清晰、干净、准確这样才会对做题有帮助。改正一下自己在画图时的一些坏习惯就能提高画图的能力。

最重要的也是高中生最需要培养的就是解图能力。就是根据给定图形能否提炼出更多有用信息;反之亦然根据已知条件能否画出准确图形。

现在高考中会出现数学实验题这是新课標的产物,就是为了考验学生的综合能力题虽然新,但只要细心分析就会发现其实解题运用的知识都是你学过的。高考题是非常严谨嘚出题不可能超出教学大纲。

学好数学的核心就是悟悟就是理解,为了理解就要看做想……看笔记,做作业后的反思章节的总结,改错误时得找原因整理复习资料,在课外读物中开阔眼界……这一系列的活动都是“悟”。要自觉去“悟”就要提高主动性,做恏学习计划合理安排时间,制定好自己的长期的短期的目标这一切措施,就是我们上面所说的5条学习方法

我要回帖

更多关于 一题多变的数学题 的文章

 

随机推荐