深度学习有哪些接地气又好玩的应用?
demi 在 周三, 10/09/2019 - 09:27 提交
过去几年中,深度学习中的很多技术如计算机视觉、自然语言处理等被应用在很多实际问题中,而且相关成果也表明深度学习能让人们的工作效果比以前更好。
深度学习是一种基于人工神经网络的机器学习方法,它通过多层神经网络对数据进行建模和学习,从而使计算机能够自动从数据中提取特征并进行预测。深度学习在图像处理、语音识别、自然语言处理等领域取得了显著的突破,特别是在大数据和强大计算能力的支持下,深度学习已成为解决复杂问题的主要技术。
过去几年中,深度学习中的很多技术如计算机视觉、自然语言处理等被应用在很多实际问题中,而且相关成果也表明深度学习能让人们的工作效果比以前更好。
深度学习不适用于什么样的任务?依我之见,以下这些主要场景的深度学习弊大于利。
在大多数机器学习问题中,我们关注某些性能度量P,其定义于测试集上并且可能是不可解的。因此,我们只是间接地优化P。我们系统通过降低代价函数J(θ)来提高P。这一点与纯优化不同,纯优化最小化目标J本身。训练深度模型的优化算法通常也会包括一些针对机器学习目标函数的特定结构进行的特化。通常,代价函数可写为训练集上的平均。
是否需要人工构造特征,这应该是深度学习和传统机器学习的最明显的差异。feature engining是传统机器学习中的一个重要组成部分,sift,hog,wavelet等都是解决如何描述数据的问题。深度学习兴起后,feature engining的研究几乎停滞,而end-to-end成为一个新兴的研究方向。
本文就来讨论一下参数初始化到底有什么讲究以及常见的参数初始化的一些策略方法。阅读本文需要神经网络相关背景,能够理解误差反向传播算法的实现过程。
深度学习中的技巧:
初始化参数尽量小一些,这样 softmax 的回归输出更加接近均匀分布,使得刚开始网络并不确信数据属于哪一类;另一方面从数值优化上看我们希望我们的参数具有一致的方差(一致的数量级),这样我们的梯度下降法下降也会更快。同时为了使每一层的激励值保持一定的方差,我们在初始化参数(不包括偏置项)的方差可以与输入神经元的平方根成反比
学习率(learning rate)的设置应该随着迭代次数的增加而减小,个人比较喜欢每迭代完一次epoch也就是整个数据过一遍,然后对学习率进行变化,这样能够保证每个样本得到了公平的对待
滑动平均模型,在训练的过程中不断的对参数求滑动平均这样能够更有效的保持稳定性,使其对当前参数更新不敏感。例如加动量项的随机梯度下降法就是在学习率上应用滑动平均模型。
在验证集上微小的提升未必可信,一个常用的准则是增加了30个以上的正确样本,能够比较确信算法有了一定的提升
集成学习(ensemble learning)是机器学习中一类学习算法,值训练多个学习器并将它们组合起来使用的方法。这类算法通常在实践中会取得比单个学习器更好的预测结果。
过拟合是指学习时选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测的很好,但对未知数据预测的很差的现象。过拟合的是由数据和模型两方面原因共同造成的,最直接防止过拟合的方法是无限增大训练集的大小,让训练集样本与真实数据分布尽可能接近,但这么做实在是不太现实......
在讲深度学习中优化算法之前,我想有必要对模型优化中常见的挑战有一个总览式的了解,这对于优化算法的理解还是有颇有裨益的。本篇博客是基于古德费洛的《Deep Learing》第8章和杨云的《深度学习实战》第五章总结归纳的。
经常会被问到你用深度学习训练模型时怎么样改善你的结果呢?然后每次都懵逼了,一是自己懂的不多,二是实验的不多,三是记性不行忘记了。所以写这篇博客,记录下别人以及自己的一些经验。