如何改进你自己的CNN?
随着深度卷积神经网络(CNN)在图像处理领域的快速发展,它已经成为机器视觉领域的一种标准,如图像分割、对象检测、场景标记、跟踪、文本检测等。然而,想要熟练掌握训练神经网络的能力并不是那么容易。比如,我们常常会遇到如下问题。你的数据和硬件有什么限制?你应该是从何种网络开始?你应该建立多少与卷积层相对的密集层?你的激励函数怎样去设置?即使你使用了最流行的激活函数,你也必须要用常规激活函数。
神经网络是一种受到生物神经系统启发而设计的计算模型,用于机器学习和人工智能领域。神经网络由大量的人工神经元(模拟生物神经元)组成,这些神经元通过连接权重相互连接,形成网络结构。神经网络的目标是通过学习和调整权重来模拟和解决复杂的问题。
随着深度卷积神经网络(CNN)在图像处理领域的快速发展,它已经成为机器视觉领域的一种标准,如图像分割、对象检测、场景标记、跟踪、文本检测等。然而,想要熟练掌握训练神经网络的能力并不是那么容易。比如,我们常常会遇到如下问题。你的数据和硬件有什么限制?你应该是从何种网络开始?你应该建立多少与卷积层相对的密集层?你的激励函数怎样去设置?即使你使用了最流行的激活函数,你也必须要用常规激活函数。
在为梯度下降算法选择合适的学习速率 α 时,可以大致按3的倍数再按10的倍数来选取一系列α值,直到我们找到一个值它不能再小了,同时找到另一个值,它不能再大了。其中最大的那个 α 值,或者一个比最大值略小一些的α 值 就是我们期望的最终α 值。
在讨论如何调试模型之前,我们先来纠正一个误区。通常理解如何调试模型的时候,我们想到一系列优秀的神经网络模型以及调试技巧。但这里需要指出的是数据才是模型的根本,如果有一批质量优秀的数据,或者说你能将数据质量处理的很好的时候,往往比挑选或者设计模型的收益来的更大。那在这之后才是模型的设计和挑选以及训练技巧上的事情。
本次所讲的内容为Batch Normalization,简称BN,来源于《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》,是一篇很好的paper。
从直观上来看,一个不规则的卷积核(其shape可以自动学习)似乎更适应输入的pattern。 但考虑更多方面,比如学习效率、操作复杂度这些因素。个人认为,不规则卷积目前不是一个很有应用价值的工作。
神经网络中激活函数的真正意义是什么?激活函数的意义是“让神经网络具备强大的拟合能力”。
神经网络能否代替决策树算法?两者是不同的应用场景。传统的机器学习比如SVM和树算法,要求数据是结构化数据,比如离散或者连续的好几个特征,特征通常都是数值类型,并且具有一定统计意义。
算法中的learning rate a(学习率)、iterations(梯度下降法循环的数量)、L(隐藏层数目)、n(隐藏层单元数目)、choice of activation function(激活函数的选择)都需要你来设置,这些数字实际上控制了最后的参数W和b的值,所以它们被称作超参数。
在神经网络里面,会经常用到activation function,不管是CNN还是RNN亦或是其他带有神经元的网络,activation function都扮演着重要角色。刚接触神经网络的时候,脑子里总会浮现很多问题。为什么会有这么多activation function?为何这个函数就比另一个效果好?这么多函数,我们该使用哪一个?
由于人工神经网络的快速发展,它已经成为模式识别的强有力的工具。神经网络的运用展开了新的领域,解决其它模式识别不能解决的问题,其分类功能特别适合于模式识别与分类的应用。多层前向BP网络是目前应用最多的一种神经网络形式,它具备神经网络的普遍优点,但它也不是非常完美的, 为了更好的理解应用神经网络进行问题求解, 这里对它的优缺点展开一些讨论。