用TensorFlow实现神经网络
1
如果你一直在关注数据科学/机器学习等相关领域,那么你一定不会错过有关深度学习和神经网络的任何动态。组织正在寻找一些深谙深度学习技能的人,无论他们将深度学习的知识用于何处。从开启竞争到开源项目再到巨额奖金,人们正在试图尝尽一切办法来挖掘这个领域有限的人才资源。
如果你对深度学习的发展前景充满憧憬和期望,但还不曾开始迈进这个领域,那么,在这里我将助你开启旅程。
在本文中,我将介绍TensorFlow的相关知识。相信阅读本文后,你将能够了解神经网络的应用,并学会使用TensorFlow来解决现实生活中的问题。而在阅读本文之前,要求你能够了解神经网络的基础知识,并熟悉编程。尽管这篇文章中的代码是用Python编写的,但我会将重点放在概念上,并尽可能保持所谈论的内容与编程无关。
何时使用神经网络
众所周知,到目前为止,神经网络成为人们关注的焦点已有很长一段时间了。如果还不是很了解,点击链接,这里有有关神经网络和深度学习的更为详尽的阐述。
(https://www.analyticsvidhya.com/blog/2016/10/an-introduction-to-implementing-neural-networks-using-tensorflow/?utm_source=dzone&utm_medium=social)其中,它的“更深度”版本已然在诸如图像识别、语音和自然语言处理等诸多领域取得了巨大的突破性进展。
2
而在神经网络的使用这有一个至关重要的问题出现了,那就是“什么时候应该使用神经网络?什么时候不应该使用神经网络呢”?现如今,这个领域俨然就是一座金矿,每天都会有许多“宝藏”破土而出,而如果想要成为这个“淘金热”的一部分,你必须注意几点:
?首先,神经网络需要清晰且翔实的数据(主要是大数据)进行训练。你可以试着将神经网络想象成一个孩子。在最初的时候,它首先要观察其父母的走路方式,然后,它试着自己走,一步一步地走下去,这个孩子就学会了如何去执行一项特定的任务。在这个过程中,它可能会跌倒几次,但经过几次失败的尝试之后,它就学会了如何走路。如果你不让它尝试着自己走,那么它可能永远也学不会如何走路。你为孩子提供的尝试机会越多,它就会越来越好。
?对于诸如图像处理这样的复杂问题,使用神经网络是一种需要很谨慎的行为。神经网络是隶属于一种称为表征学习算法(representation learning algorithms)的一类算法。这些算法将复杂问题分解成更为简单的形式,使其变得可以理解(或“可表征”)。其实你可以把它想象成是在你吞咽食物之前咀嚼食物的行为。而这对于传统算法(非表征学习)来说,将变得更加困难。
?当你认为有了适当的神经网络类型来解决问题时,殊不知每个问题都有自己的难点。而数据将决定你用以解决问题的方式。例如,如果是序列生成的问题,则选择循环神经网络是最为合适的,而如果它是一个和图像相关的问题,那么你可能就需要做些改变,采用卷积神经网络才是一个合适的选择。
3
?最后一点但也同样重要的是,硬件需求对运行深度神经网络模型来说是至关重要的。其实,神经网络很久以前就被“挖掘”出来了,但直到近年,它才开始“闪闪发光”,而这主要得益于计算资源的越来越好和越来越强大。如果你想要用这些网络来解决实际问题,建议你做好准备去购买一些高端硬件!
如何使用神经网络解决问题
神经网络是一种特殊类型的机器学习(ML)算法。因此,与每个ML算法一样,它遵循数据预处理,模型构建和模型评估的通用ML工作流。为了简明起见,我列出了一个如何处理神经网络问题的待办事项清单。
?检查神经网络是否提升了传统算法(参考上述章节中的检查列表)。
?做一项关于哪个神经网络架构最适合亟待解决问题的调查。
?通过你所选择的语言/库来定义神经网络架构。
?将数据转换为正确的格式,并将其分为若干批量。
4
?根据需要对数据进行预处理。
?添加数据以增加大小并做出更好的训练模型。
?将批量馈送到神经网络。
?训练、监测训练过程中的变化并验证数据集。
?对模型进行测试并保存以备将来使用。
对于这篇文章,我将重点介绍图像数据。在深入了解TensorFlow之前,需要首先对其有基本了解。
理解图像数据及用以解决问题的流行库
5