
神经网络
魂小猫
这个作者很懒,什么都没留下…
展开
-
深层神经网络——过拟合问题
损失函数是用于优化训练数据。然而真实的应用中想要的并不是让模型尽量模拟训练数据的行为,而是希望通过训练出来的模型对未知的数据给予判断。模型在训练数据上的表现并不一定代表了它在未知数据上的表现。 过拟合就是导致这个差距的重要因素,所谓过拟合就是当一个模型郭伟复杂之后,它可以很好的“记忆”每一个训练数据中随机噪音的部分而忘记了要去“学习”训练数据中的通用趋势。 比较极端的例子就是,当模型中的参数比训原创 2017-07-20 16:49:11 · 18734 阅读 · 1 评论 -
深层神经网络——滑动平均模型
在采用随机梯度下降算法训练神经网络时,使用滑动平均模型在很多应用中都可以在一定程度上提高最终模型在测试数据上的表笑。 在Tensorflow中提供了tf.train.ExponentialMovingAverage来实现滑动平均模型。在初始化ExponentialMovingAverage 时,需要提供一个衰减率(decay)。这个衰减率会用于控制模型的更新速度。ExponentialMovin原创 2017-07-20 17:33:20 · 6043 阅读 · 4 评论 -
深层神经网络——总结
设计神经网络的两个总体原则:非线性结构和多层结构 设计损失函数,神经网络是一个优化问题,而损失函数就是刻画了神经网络需要优化的目标。分类问题和回归问题的常用损失函数。 优化神经网络最常用反向传播算法和梯度下降算法。 指数衰减方法设置学习率,加快训练速度,训练后期又不会出现损失函数在极小值周围徘徊往返情况。 正则化解决过拟合问题。原创 2017-07-20 18:25:34 · 359 阅读 · 0 评论 -
深层神经网络——线性模型的局限性
深度学习精确定义: 一类通过多层非线性变换对高复杂数据建模算法的集合。 深层神经网络是实现多层非线性变换最常用的一种方法,实际中基本可以认为深度学习就是深层神经网络的代名词。 深度学习特性:多层和非线性线性模型的局限性: 再线性模型中,模型的输出为输入的加权和,假设一个模型的输出y和输入x满足以下关系,这个模型就是一个线性模型。 其中wi,b∈R为模型参数。被称之为线性模型是因为当模型原创 2017-07-17 21:56:26 · 4363 阅读 · 0 评论 -
深层神经网络——激活函数去线性化
当神经元结构的输出为所有输入的加权和,那么神经网络是一个线性模型。如果将每一个神经元(神经网络节点),的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了。这个非线性函数就是激活函数。 下图为加入了激活函数和偏置项后的神经元结构: 神经网络结构加上激活函数和偏置项后的前向传播算法的数学定义为: 相比于传统的神经网络主要有两个改变: 第一是增加了偏置项(bias),偏置项原创 2017-07-17 22:17:46 · 3595 阅读 · 1 评论 -
深层神经网络——多层网络解决异或运算
异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。 异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(原创 2017-07-18 11:32:06 · 2886 阅读 · 0 评论 -
深层神经网络——分类、回归的损失函数
神经网络模型的效果以及优化目标是通过损失函数(loss function)来定义的。分类问题和回归问题有很多经典的损失函数。 分类问题和回归问题是监督学习的两大种类。 分类问题希望解决的是将不同的样本分到事先定义好的类别中。再这种问题下,需要将样本二分类(多分类)。手写字体识别就是一个十分类的问题。 再判断二分类问题的时候,可以定义一个有单个输出节点的神经网络,当这个节点输出越接近1(或者设定原创 2017-07-18 14:02:57 · 25673 阅读 · 1 评论 -
神经网络优化算法
反向传播算法(backpropagation)和梯度下降算法(gradient decent)调整神经网络中参数的取值。梯度下贱算法主要用于优化单个参数的取值,而反向传播算法给出了一个高效的方式在所有参数上使用梯度下降算法,从而使神经网络模型在训练数据上的损失函数尽可能的小。反向传播算法是训练神经网络的核心算法,它可以根据定义好的损失函数优化神经网络中的参数的取值,从而使神经网络模型在训练数据集上的原创 2017-07-18 20:39:19 · 3760 阅读 · 0 评论 -
神经网络优化——学习率
训练神经网络的时候需要设置学习率(learning rate)控制参数更新速度。学习率决定了参数每次更新的幅度。如果幅度过大,可能导致参数在最优值的两侧来回移动。 从上图可知,无论进行多少次迭代,参数将在5和-5之间摇摆,而不会收敛到一个极小值。相反学习率过小时,虽然能保证收敛性,但是会大大降低优化速度。 Tensorflow提供了一种灵活的学习率设置方法——指数衰减法。 tf.train原创 2017-07-19 14:54:31 · 1214 阅读 · 0 评论