柳州网站建设公司,网站怎么建立,直播软件排名,网站建设 英语词汇优化和泛化 深度学习的根本问题是优化和泛化之间的对立。 • 优化#xff08;optimization#xff09;是指调节模型以在 训练数据 上得到最佳性能#xff08;即机器学习中的学习#xff09;。 • 泛化#xff08;generalization#xff09;是指训练好的模型在 前所未… 优化和泛化 深度学习的根本问题是优化和泛化之间的对立。 • 优化optimization是指调节模型以在 训练数据 上得到最佳性能即机器学习中的学习。 • 泛化generalization是指训练好的模型在 前所未见的数据 上的性能好坏。 数据集的分类 数据集可以分为 1. 训练集实际训练算法的数据集用来计算梯度并确定每次迭代中网络权值的更新 2. 验证集用于跟踪其学习效果的数据集是一个指示器用来表明训练数据点之间所形成的网络函数发生了什么并且验证集上的误差值在整个训练过程中都将被监测 3. 测试集用于产生最终结果的数据集 。 为了让测试集能有效反映网络的泛化能力 1. 测试集绝不能以任何形式用于训练网络即使是用于同一组备选网络中挑选网络。测试集只能在所有的训练和模型选择完成后使用 2. 测试集必须代表网络使用中涉及的所有情形。 交叉验证 这里有一堆数据我们把他切成3个部分当然还可以分的更多 第一部分做测试集二三部分做训练集算出准确度 第二部分做测试集一三部分做训练集算出准确度 第三部分做测试集一二部分做训练集算出准确度 之后算出三个准确度的平局值作为最后的准确度。 bp 神经网络 • BP网络Back-Propagation Network 是1986年被提出的是一种按误差逆向传播算法训练的 多层前馈网络是目前应用最广泛的神经网络模型之一用于函数逼近、模型识别分类、数据压 缩和时间序列预测等。 • BP网络又称为反向传播神经网络它是一种有监督的学习算法具有很强的自适应、自学习、非 线性映射能力能较好地解决数据少、信息贫、不确定性问题且不受非线性模型的限制。 • 一个典型的BP网络应该包括三层:输入层、隐藏层和输出层。各层之间全连接同层之间无连接。 隐藏层可以有很多层。 1.将训练集数据输入到神经网络的输入层经过隐藏层最后达到输出层并输出结果这就是前 向传播过程。 2.由于神经网络的输出结果与实际结果有误差则计算估计值与实际值之间的误差并将该误差 从输出层向隐藏层反向传播直至传播到输入层 3.在反向传播的过程中根据误差调整各种参数的值相连神经元的权重使得总损失函数减 小。 4.迭代上述三个步骤即对数据进行反复训练直到满足停止准则。 我们利用神经网络去解决图像分割边界探测等问题时候我们的输入假设为x与期望的 输出假设为y之间的关系究竟是什么也就是 yf(x) 中 f是什么 我们也不清楚但是我们 对一点很确信那就是 f不是一个简单的线性函数 应该是一个抽象的复杂的关系那么利用神 经网络就是去学习这个关系存放在model中利用得到的model去推测训练集之外的数据得 到期望的结果。 训练学习过程 正向传播 输入信号从输入层经过各个隐藏层向输出层传播。在输出层得到实际的响应值若实际值与期 望值误差较大就会转入误差反向传播阶段。 反向传播 按照梯度下降的方法从输出层经过各个隐含层并逐层不断地调整各神经元的连接权值和阈值 反复迭代直到网络输出的误差减少到可以接受的程度或者进行到预先设定的学习次数。 代(Epoch)使用训练集的全部数据对模型进行一次完整训练被称为“一代训练”。 批大小(Batch size)使用训练集的一小部分样本对模型权重进行一次反向传播的参数更新这一小部分样本被称为“一批数据” 迭代(Iteration)使用一个Batch数据对模型进行一次参数更新的过程被称为“一次训练”一次迭代。 每一次迭代得到的结果都会被作为下一次迭代的初始值。一个迭代一个正向通过一个反向通过。 比如训练集有 500 个样本 batchsize 10 那么训练完整个样本集 iteration50 epoch1 神经网络的训练过程 1.提取特征向量作为输入。 2.定义神经网络结构。包括隐藏层数激活函数等等。 3.通过训练利用反向传播算法不断优化权重的值使之达到最合理水平。 4.使用训练好的神经网络来预测未知数据(推理)这里训练好的网络就是指权重达到最优的情 况。 神经网络的训练过程 1、选择样本集合的一个样本AiBiAi为数据、Bi为标签所属类别 2、送入网络计算网络的实际输出Y此时网络中的权重应该都是随机量 3、计算DBi − Y即预测值与实际值相差多少 4、根据误差D调整权重矩阵W 5、对每个样本重复上述过程直到对整个样本集来说误差不超过规定范围 更具体的 1 参数的随机初始化 2 前向传播计算每个样本对应的输出节点激活函数值 3 计算损失函数 4 反向传播计算偏导数 5 使用梯度下降或者先进的优化方法更新权值 参数的随机初始化 • 对于所有的参数我们必须初始化它们的值而且它们的初始值不能设置成一样比如都设置成0或1。 如果设置成一样那么更新后所有参数都会相等。即所有神经元的功能都相等造成了高度冗余。所 以我们必须随机化初始参数。 • 特别的如果神经网络没有隐藏层则可以把所有参数初始化为0。但这也不叫深度神经网络了 标准化 Normalization 原因由于进行分类器或模型的建立与训练时输入的数据范围可能比较大同时样本中各数据可 能量纲不一致这样的数据容易对模型训练或分类器的构建结果产生影响因此需要对其进行标准 化处理去除数据的单位限制将其转化为无量纲的纯数值便于不同单位或量级的指标能够进行 比较和加权。 其中最典型的就是数据的归一化处理即将数据统一映射到[0,1]区间上 z-score标准化零均值归一化 zero-mean normalization • 经过处理后的数据均值为0标准差为1正态分布 • 其中μ是样本的均值 σ是样本的标准差 损失函数 损失函数用于描述模型预测值与真实值的差距大小。一般有有两种常见的算法——均值平方差 MSE和交叉熵。 • 均值平方差Mean Squared ErrorMSE也称“均方误差” • 交叉熵cross entropy也是loss算法的一种一般用在分类问题上表达意思为预测输入 样本属于哪一类的概率。值越小代表预测结果越准。y代表真实值分类0或1a代 表预测值 损失函数的选取取决于输入标签数据的类型 1. 如果输入的实数、无界的值损失函数使用MSE。 2. 如果输入标签是位矢量分类标志使用交叉熵会更适合 梯度下降法 • 梯度 ∇ f( ∂ x1 ∂ f; ∂ x2 ∂ f;…; ∂ xn ∂ f)指函数关于变量x的导数梯度的方向表示函数值增大的方向梯度 的模表示函数值增大的速率。 • 那么只要不断将参数的值向着梯度的反方向更新一定大小就能得到函数的最小值全局最小值或者局部最小值。 • 一般利用梯度更新参数时会将梯度乘以一个小于1的 学习速率learning rate 这是因为往往梯度的模还是比较大的直接用其更新参数会使得函数值不断波动很难收敛到一个平衡点这也是学习率不宜过大的原因。 学习率 是一个重要的超参数它控制着我们基于损失梯度调整神经网络权值的速度。 学习率越小我们沿着损失梯度下降的速度越慢。 从长远来看这种谨慎慢行的选择可能还不错因为可以避免错过任何局部最优解但它也意味 着我们要花更多时间来收敛尤其是如果我们处于曲线的至高点。 新权值 当前权值 - 学习率 × 梯度 紫色部分正确结果与节点输出结果的差值也就是误差; 红色部分节点的激活函数所有输入该节点的链路把经过其上的信号与链路权重做乘积后加总再把加总结果进行激活函数运算; 绿色部分链路w(jk)前端节点输出的信号值。 泛化能力分类 • 欠拟合模型没有能够很好的表现数据的结构而出现的拟合度不高的情况。模型不能在训练集上获得足够低的误差 • 拟合测试误差与训练误差差距较小 • 过拟合模型过分的拟合训练样本但对测试样本预测准确率不高的情况也就是说模型泛化能力很差。训练误差和测试误差之间的差距太大 • 不收敛模型不是根据训练集训练得到的。 过拟合 • 过拟合指的是给定一堆数据这堆数据带有噪声利用模型去拟合这堆数据可能会把噪声数据也给拟合了。 • 一方面会造成模型比较复杂 • 另一方面模型的泛化性能太差了遇到了新的数据用所得到的过拟合的模型正确率是很差的。 出现的原因 1、建模样本选取了错误的选样方法、样本标签等或样本数量太少所选取的样本数据不足以代表预定的分类规则 2、样本噪音干扰过大使得机器将部分噪音认为是特征从而扰乱了预设的分类规则 3、假设的模型无法合理存在或者说是无法达到假设成立的条件 4、参数太多导致模型复杂度过高 5、对于神经网络模型a)对样本数据可能存在分类决策面不唯一随着学习的进行,BP算法使权值可能收敛过于复杂的决策面b)权值学习迭代次数足够多拟合了训练数据中的噪声和训练样例中没有代表性的特征 过拟合的解决方法 1. 减少特征删除与目标不相关特征如一些特征选择方法 2. Early stopping • 在每一个Epoch结束时计算validation data的accuracy当accuracy不再提高时就停止训练。 • 那么该做法的一个重点便是怎样才认为validation accurary不再提高了呢并不是说validationaccuracy一降下来便认为不再提高了因为可能经过这个Epoch后accuracy降低了但是随后的Epoch又让accuracy又上去了所以不能根据一两次的连续降低就判断不再提高。 • 一般的做法是在训练的过程中记录到目前为止最好的validation accuracy当连续10次Epoch或者更多次没达到最佳accuracy时则可以认为accuracy不再提高了。此时便可以停止迭代了Early Stopping。 • 这种策略也称为“No-improvement-in-n”n即Epoch的次数可以根据实际情况取如10、20、30 3. 更多的训练样本。 4. 重新清洗数据。 5. Dropout 在神经网络中dropout方法是通过修改神经网络本身结构来实现的 1. 在训练开始时随机删除一些可以设定为1/2也可以为1/31/4等隐藏层神经元即 认为这些神经元不存在同时保持输入层与输出层神经元的个数不变。 2. 然后按照BP学习算法对ANN中的参数进行学习更新虚线连接的单元不更新因为认为这 些神经元被临时删除了。这样一次迭代更新便完成了。下一次迭代中同样随机删除一 些神经元与上次不一样做随机选择。这样一直进行直至训练结束。 Dropout方法是通过修改ANN中隐藏层的神经元个数来防止ANN的过拟合。 为什么Dropout能够减少过拟合 1. Dropout是随机选择忽略隐层节点在每个批次的训练过程由于每次随机忽略的隐层节点都不同这样就使每次训练的网络都是不一样的 每次训练都可以当做一个“新”模型 2. 隐含节点都是以一定概率随机出现因此不能保证每2个隐含节点每次都同时出现。 这样权值的更新不再依赖有固定关系隐含节点的共同作用阻止了某些特征仅仅在其他特定特征下才有效果的情况。 总结Dropout是一个非常有效的神经网络模型平均方法通过训练大量的不同的网络来平均预测概率。不同的模型在不同的训练集上训练每个epoch的训练数据都是随机选择最后在每个模型用相同的权重来“融合”。 • 经过交叉验证隐藏节点dropout率等于0.5的时候效果最好。 • dropout也可以被用作一种添加噪声的方法直接对input进行操作。输入层设为更接近1的数。使 得输入变化不会太大0.8 • dropout的缺点就在于训练时间是没有dropout网络的2-3倍。