最近,神经网络这个词特别火,吸引不少眼球。但是神经网络是个啥?有啥用?
这篇文章和大家唠唠,啥是神经网络,对于初学者来说主要有哪些挑战,以及介绍几种经典的神经网络类型,和相关行业应用。
神经网络的工作原理
基本上,神经网络是由一层一层的不同的计算单位连接起来的。我们把计算单位称为神经元,这些网络可以把数据处理分类,就是我们要的输出。神经网络原理-
每个神经元把最初的输入值乘以一定的权重,并加上其他输入到这个神经元里的值(并结合其他信息值),最后算出一个总和,再经过神经元的偏差调整,最后用激励函数把输出值标准化。
迭代的学习过程
神经网络有个很关键的特征,它的学习过程是迭代的。也就是说,在学习期间,处理数据的过程会不断重复,而且为了准确预测输入值的分类,每次都会调整和输入数据有关的权重。
神经网络的优点,在于他们对很乱的数据的容忍度很高,同时也有很强的分类能力,连未训练的数据也能区分出来。
而最受欢迎的神经网络算法,是反向传播算法。
为了解决某个特定问题,神经网络要得到足够的训练。在训练最开始的时候,初始权重是随机定的。
如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯量,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。
神经网络通过隐藏层里的权重和函数,一次处理训练集里的一组数据,然后把输出值和实际结果作对比。然后把误差返回给整个网络系统,针对要解决的问题来调权重。再输入下一组数据,看偏差值有没有变小。
这个过程要不断地反复调整权重。所以在训练的过程中,同一组数据会被处理很多次,直到每一层的权重都被精细地调校过。
这个过程有多困难呢?
对于神经网络的初学者来说,其中的一个挑战是要理解每一层有什么用。我们知道,在训练过后,每一层都会抽取出来输入值的高阶或更高阶的特征,直到最后一层决定输入的特征所指的是什么。那这个过程是怎么完成的?
与其指定神经网络最后放大的特征,还不如让神经网络自己得出来。
由于神经网络的每一层的处理,是不同维度的抽象特征。所以强化哪一层,会对最后的值的特征的复杂性有不同的影响。而在我们选了其中一个层后,就可以看到神经网络最后增强了什么的特征。神经网络原理-
流行的神经网络类型及其应用
接下来,我们会了解一下自动编码器,卷积神经网络和循环神经网络。
自动编码器
根据之前的经验,随机初始化的结果并不好。所以为了获得更好的初始权重,我们可以考虑用无监督学习算法来预训练每个层。
类似的例子,可以参考被无监督算法训练的Deep Belief Networks。 最近,有一些新的研究尝试在这个领域寻找突破,比如,使用概率自动编码器的变分方法。
不过实际上,它们很少被用到。 最近,对于更深的神经网络来说,已经可以进行批量地标准化。通过残差学习,我们能从头开始训练任意深度神经网络了。在适当的维度和稀疏性的约束下,自动编码器可以学习到,比PCA或其他基本技术更有趣的数据投影。
我们来看看两个有趣的自动编码器的实际应用:
医学图像的降噪
通过卷积层,自动编码器实现高效降噪。
△ 降噪自动编码器,就是设定为忽略某些输入的
在随机干扰过程中,通过随机地将一些输入数据设为零,让降噪自动编码器自己判断哪些是丢失(损坏)的值,从而预测出哪些是丢失模式的子集。
数据可视化
用主成分分析(PCA),和t分布随机相邻嵌入(t-SNE)等方法,可以实现降维。 在训练神经网络的时候,结合以上方法,能提高模型的预测精度。而且,多层神经网络的预测精度很大程度上依赖于神经网络结构,预处理的数据,以及该神经网络要解决的问题类型。
卷积神经网络
卷积神经网络,这个名字是来源于“卷积”运算符。 它的主要目的,在于从输入的图像中提取特征。而特征的提取,是通过使用输入数据里3×3的区域学习到的。这样,卷积网络就能够保留像素之间的空间关系。
卷积神经网络在以下领域取得了成功:
人脸识别
级联卷积神经网络,可以快速高效地识别人脸。 检测器先用低分辨率评估输入图像,把非面部区域快速排除掉,再以更高的分辨率,仔细处理并精确检测更复杂的区域。
为了加速检测并提高边框质量,还在级联中引入了校准网络。
自动驾驶
卷积神经网络传统上用于图像分析和目标识别。
在自动驾驶的项目中,空间纵深的估算能力特别重要。没有它,就无法确保乘客和其他车辆的安全。NVIDIA的自动驾驶汽车等项目,就已经开始使用CNN了。
CNN非常灵活,可以通过多层的参数来处理输入,其中还包括深度信念网络(DBN)。
另外,还有个好玩的用法, 可以在游戏模拟器中,用CNN来开车并预测转弯的角度 。神经网络原理-
循环神经网络
循环神经网络可以生成序列。每次处理单组的真实数据序列之后,就预测接下来会发生什么。那这种模型是怎么一步一步搭起来的呢?
假设,预测的结果是存在概率分布的话,那么可以反复取各种输入值,产生新的序列。输入值的来源可以是已经训练过的网络的输出值,取得越分散越好。换句话说,让神经网络把自己生成的结果,当作真实世界里产生的数据值,用作输入,就像一个人在做梦一样。梦里那些虚幻不存在的场景,也能成为我们记忆中感知的一部分。
预测
神经网络经过训练后,给定一个输入值,就能得到在预期内的输出值。
如果我们有个神经网络,能够完美地拟合一系列已知的值,那么这个网络也能预测未来的值。
现在,预测股价的模型用得最6。
不同领域里神经网络的应用
在真实的商业环境里,神经网络已经应用很广泛了,比如销售量预测,用户调查,数据有效性,和风险调控。
市场
目标市场与市场细分有关,根据用户不同的消费行为,我们能把市场划分得很细。
按地域分布,经济能力、购买习惯、对产品的态度等维度分类,是神经网络最拿手的事。无监督学习可以自动把有相似属性的用户分类到一起。
零售行业
神经网络用来预测超市的销售量特别有优势,因为它能多维度考虑问题。比如一个产品可能有多大的市场需求量,一个消费者的收入,人口分布,产品价格等方面。
一旦两个商品,在某段时间内他们的销售量存在间接的联系,像一个用户买完打印机之后,很大可能会在3到4个月的时候需要补充新墨盒,那么零售商可以从顾客的购买数据来有效地推产品,避免顾客流失到竞争对手那。
金融行业
神经网络已经成功解决了多个金融类的问题,比如衍生类的保值型理财产品,未来价值的预测,外汇汇率的预测,以及股票市场的表现。以前,是数据技术驱动着软件的发展;现在,神经网络驱动着大家做出更优的理财选择。
医药行业
高效的人体生理系统建模、快速检测疾病这些方面的工作,需要大量神经网络来支持。大家都很看好未来神经网络在医疗领域大规模的应用。
结论
也许,用神经网络解决实际问题的同时,未来神经网络还能当艺术家创作的工具,混合出新的视觉效果。说不定我们还可以从中发现创意的规律。