1、使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第1页/共17页使用Tensorflow PlayGround理解神经网络非官方中文译文安天技术公益翻译组 译注文 档 信 息原 文 名 称 U n d e r s t a n d i n g n e u r a l n e t w o r k s w i t h Te n s o r F l o wP l a y g r o u n d原 文 作 者 K a z S a t o 原 文 发 布日 期 2 0 1 6 年 7 月 2 6 日作 者 简 介 K a z S a t o 是 G o o g l e C
2、l o u d 的 技 术 推 广 者 。h t t p s : / / w w w . l i n k e d i n . c o m / i n / k a z u n o r i 2 7 9 /原 文 发 布单 位 G o o g l e C l o u d原 文 出 处 h t t p s : / / c l o u d . g o o g l e . c o m / b l o g / b i g - d a t a / 2 0 1 6 / 07 / u n d e r s t a n d i n g - n e u r a l - n e t w o r k s - w i t h
3、 - t e n s o r f l ow - p l a y g r o u n d译 者 R h y n o 校 对 者 R h y n o分 享 地 址 请 浏 览 创 意 安 天 论 坛 b b s . a n t i y . c n 安 天 公 益 翻 译 板 块免 责 声 明 本译文译者为安天实验室工程师,本文系出自个人兴趣在业余时间所译,本文原文来自互联网的公共方式,译者力图忠于所获得之电子版本进行翻译,但受翻译水平和技术水平所限,不能完全保证译文完全与原文含义一致,同时对所获得原文是否存在臆造、或者是否与其原始版本一致未进行可靠性验证和评价。 本译文对应原文所有观点亦不受本译文
4、中任何打字、排版、印刷或翻译错误的影响。译者与安天实验室不对译文及原文中包含或引用的信息的真实性、准确性、可靠性、或完整性提供任何明示或暗示的保证。译者与安天实验室亦对原文和译文的任何内容不承担任何责任。翻译本文的行为不代表译者和安天实验室对原文立场持有任何立场和态度。 译者与安天实验室均与原作者与原始发布者没有联系,亦未获得相关的版权授权,鉴于译者及安天实验室出于学习参考之目的翻译本文,而无出版、发售译文等任何商业利益意图,因此亦不对任何可能因此导致的版权问题承担责任。 本文为安天内部参考文献,主要用于安天实验室内部进行外语和技术学习使用,亦向中国大陆境内的网络安全领域的研究人士进行有限分享
5、。望尊重译者的劳动和意愿,不得以任何方式修改本译文。译者和安天实验室并未授权任何人士和第三方二次分享本译文,因此第三方对本译文的全部或者部分所做的分享、传播、报道、张贴行为,及所带来的后果与译者和安天实验室无关。本译文亦不得用于任何商业目的,基于上述问题产生的法律责任,译者与安天实验室一律不予承担。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第2页/共17页使用 Tensorflow PlayGround 理解神经网络KazSato2016 年 7 月 26 日你可能听说关于神经网络和深度学习的各种流言,也希望学得更多。但当你从书本上学习技术,许多人可能完全
6、被其中数学模型和各种公式吓到了。我也一样。对我这样的人来说,最棒的工具是可以帮助你抓住神经网络的思想而不需要任何难懂的数学。TensorFlowPlayGround,一个用 JavaScript 写的在线应用,可以让你在浏览器中玩真正的神经网络,仅仅需要你点按钮、微调参数来观察它是如何工作的。TensorFlow Playground在这篇文章,我想给大家展示如何使用 PlayGround 来理解神经网络的核心思想。那时你将明白为什么对未来技术是如此兴奋。让计算机解决问题计算机编程需要程序员,人类通过编写很多行的精确到每一步的代码来指导计算机解决问题。但用机器学习和神经网络,你可以让计算机自己
7、来尝试解决问题。神经网络是一个从给定的训练数据集作中学习预期输出的功能。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第3页/共17页神经网络是一个从给定的训练数据集作中学习预期输出的功能举例说明,构建一个识别猫图像的神经网络,你可以用很多猫的图像来训练网络。训练后的神经网络就有输入一个猫图像就会输出“猫”标签的功能。或者输入更多的实践样本从游戏服务器输入一大堆用户的活动记录就可以训练输出哪些用户有高的转化率。这是咋工作的呢?让我们看一个简单的分类器问题,假设你有下面的数据集,每个数据与 2 个值:x1(水平坐标)和 x2(垂直坐标)。这里有 2 组数据点,橙
8、色组和蓝色组。你要写怎样的代码来归类数据点是橙还是蓝?也许你可以在两组数据中间随意画一个对角线,就像下图一样,来定义一个阈值来判断点属于哪一组数据。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第4页/共17页IF 语句中的条件可能是:这里 b 就是决定那条线的阈值。如果把 w1、w2 作为 x1、x2 的相对权重,可以让代码的复用性更高。再进一步,如果你微调 w1 和 w2,你可以随意旋转线的角度。你也可以微调 b 的值来移动线的位置。所以,你可以在任何一个使用直线分类的情况下,复用这些条件。但问题是,编程人员需要找到 w1、w2、b 的最佳值-所谓的参数,
9、并指导计算机如何来分类这些点。神经元:分类数据到不同的两种分类现在,让我们看 PlayGround 是如何解决这个特定问题的。在 PlayGround 按左上的 Play按钮,那条在蓝橙中间的线开始慢慢移动。按 reset 按钮并多玩几次来观察线在不同的初始值下是如何一定的。你看到的就是计算机试图找到最佳的权重和阈值来画两组中间的值。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第5页/共17页TensorFlowPlayground 上的简单分类问题TensorFlowPlayground 正是用单一人工神经元来完成分类的。神马是人工神经元?这是受人类大脑中
10、的生理神经元的行为启发而来的想法。生理神经网络(来自:维基页面)如果需要详细的关于生理神经网络机制方面的描述,可以看维基页面:每个神经从其他相连接神经元接收到电信号会变得兴奋(活动),神经元之间的连接有不同的强度,有些连接可以强大到激活其他神经元,也有一些连接压制激活。我们大脑中上千亿的神经元和连接协力呈现出了人类的智慧。通过对生理神经元的研究启发创造了新的计算机模式,人工神经网络。在人工神经网络中,我们用简单的数学模仿了生理神经元的行为。为了解决上述的分类问题,可以用下面的简单神经网络,单一的神经元(或者说感知器)为特色。使用Tensorflow PlayGround理解神经网络安天技术公益
11、翻译组献译第6页/共17页x1 和 x2 是输入值,w1 和 w2 是展现连接到神经元上的力度。B 通称是偏差,决定输入是否需要激活的阈值。单一神经元可以用下面的公式来计算。对,这就是我们用到的直线分类数据集的公式。实际上,人工神经元唯一做的一件事:通过检测带权重的输入值和偏差,把一个数据点分成两类中的一个。对于 2 个输入,一个神经元可以用一条直线在二维空间分成 2 类。如果你有 3 个输入,一个神经元可以在三维空间中用一个平面将数据点分成 2 部分,等等。这叫用超平面分割 n 维空间。神经元将数据点分为两类用单个神经元来完成图像识别为啥超平面可以解决每天的问题,举个例子,想象你有一大堆的手
12、写文字图像如下图。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第7页/共17页手写文字的图像(来自:MNISTForMLBeginners)你可以训练单个神经网络在一个图像数据集中区分出“8 的图像”和“其他图像”。那要怎么做呢?首先,你需要准备数万个手写图像来训练。假如每个图像有 28x28 的灰度点,它可以放到一个 28x28=784 的数组中。如果有 55,000 个样本图像,那就会有一个784*55000 数字的数组。对每一个来自 5 万 5 千个样本的图像,输入 784 个数字和是不是“8”的训练标签到一个单个神经元。就像你看到 Playgroun
13、d 中的演示一样,计算机试图发现一个最优的权重和偏差集来分类每个图像是不是“8”。通过训练 5 万 5 千个样本,神经元会生成如下的权重集,这里蓝色表示正值,红色表示负值。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第8页/共17页就是这样,即便是这样一个非常基础的单个神经元,就可以完成手写文字图像 90%的精度。如果识别所有 09 的数字,就需要 10 个神经元,结果是 92%的正确率。再说一遍,这个神经元只能做一件事就是对一个数据点进行二选一,是不是“8”。数据点的定义是啥?在本例中指每个图像中包含的 28x28=784 个数。用数学的术语,每个图像是
14、784 维空间中的一个单点。神经元用单个超平面把这个 784 维的空间一分为二,并分类每个数据点是不是“8”(的确很难想象这样的多维空间和超平面是神马样子,忘了它吧)。在上面的这个例子中,我们用了手写图像作为样本数据,实际上,你可以用神经网络来归类各种不同的数据。比如,在线游戏商可以检查玩家的活动日志来判别玩家是否作弊;电商可以通过网络存取日志和交易历史来鉴定优质顾客。或者说,任何数据只要能转换并标识成 n 维空间中的数据点,你就可以让神经元尝试发现超平面,看看是否高效地归类了你的问题。如何训练一个神经网络你已经看到,神经网络是可以用基础数学来实现 的简单的原理。在传统编程和神经网络中唯一的不
15、同是,再说一遍,就是让计算机通过学习数据集来决定参数(权重和偏差)。或者说,我们例子中训练权重模式不是由人类编程写的。本文,我将不讨论如何训练参数的算法细节诸如向后传导和梯度下降。计算机试图微微增加或减少每个参数来缩小和训练数据集的错误,期望能发现参数的最优组合,这应该就足够了。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第9页/共17页想象计算机是个学生或者学徒工,在刚开始计算机犯了很多错误,过一段时间后它发现解决真实世界中的问题(包括未来可能出现的问题)的方法并最小化错误(也叫泛化)。神经网络需要一段时间进行训练才能最小化错误(来自:I)我们可能会在今后
16、的文章中重新讨论这个问题。目前神经网络库诸如 TensorFlow 包装了大部分训练必须的数学,足够你使用,不必担心太多。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第10页/共17页更多的神经元,更多的细节需要展开我们演示了一个单元的神经元可以完成一个简单的分类。但你可能惊奇如何用这么简单的神经元来构建一个可以识别千万不同的图像并和专业的围棋选手竞技的网络?神马神经网络可以比我们之前描述的聪明许多的理由是啥?让我们看一下 PlayGround 中另外一个例子。这个数据集不能用单个神经元分类,两组数字点不能用一条线来分开。这就是非线性分类问题,在真实世界中,
17、如同本例中类似的非线性和复杂的数据集无穷无尽,问题是如何捕获到这类复杂分类的模式呢?答案就是在输入值和输出神经元中间增加隐藏层。点这试试。非线性分类问题到底发生了神马?当你点每一个隐藏层的神经元,你看到它们都是做了简单的单线分类。 第一个神经元检查点是左还是右使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第11页/共17页 第二个神经元检查是否在右上 第三个神经元检查是否在右下这三个结果叫数据的特征,这些神经元的输出代表他们相应的特征关联强度。最终,输出层神经元用这些特征来分类数据,如果你用这些特征值构建一个 3 维空间,最终神经元可以简单地用超平面来区分,这
18、是一个原始数据转化到特征空间的例子。如果想看更多好看的可视转化的例子,可以看 colah 的博客。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第12页/共17页隐藏层转化到特征空间,使之可以线性分类(来自:可视化展现)在 Playground 演示这个例子中,转化产生多特征组合对应到三角形或者矩形区域。如果你点“plus”按钮添加更多的神经元,你将会看到输出神经元从数据集中捕获到更精密的多边形。回到办公室工作人员的比喻,你可以说转化是抽取真知卓见,有经验的专业人员在每天的工作中有的感觉。一个新雇员对来自 email、电话、老板、客户等等的各种随机信号感到迷糊
19、和困扰,但高级雇员就会非常高效地从这些输入中抽取关键信号并依据几条重要的原则做到井然有序。神经网络工作原理相同,试图在数据集中抽取最重要的特征来解决问题。这就是为什么神经网络有时候可以聪明到足够处理相当复杂的任务。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第13页/共17页神经网络可以从看似随机的信号中获取见解 (来自:I)我们需要深入:构建多层抽象在每个单一的隐藏层有更多的神经元就意味着可以捕获更多的特征。有更多的隐藏层意味着可以从数据集中抽取更复杂的解释。你可以从下面例子中看到这有多强大。使用Tensorflow PlayGround理解神经网络安天技
20、术公益翻译组献译第14页/共17页需要写出怎样的代码才可以分类这个数据集?一打 if 语句加上多多的条件和阈值,每次检查数据点在哪个小区域?我个人是不想这么做。这是为啥机器学习和神经网络可以超过人类程序员的工作。点这看其动作。TensorFlow Playground 的双螺旋问题(点这看其动作)很棒,不是吗?你刚看到计算机试图构建多级抽象的神经网络,第一层神经元做的是相使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第15页/共17页同的简单分类,然而第二层和第三层的神经元从简单的特征中构造出复杂的特征,最终生成双螺旋模式。更多的神经元+深度网络=更精确地抽象
21、。这就是简单神经元变聪明并出色地完成确定的问题诸如图像识别和下围棋。谷歌发布的图像识别模型 Inception一些已发表的深度网络实例显示他们训练构建多等级模式识别,从简单的边缘和小块到对象的分块和分类。两个挑战:算力和训练数据在这篇文章,我们看了一些 Playground 演示和如何解释这种机制和神经网络的能力。就像你看到的,技术的基础都是相当简单的。每个神经元只是将一个数据点分成两类中的一个,但是通过更多的神经元和更深层处理,一个神经网络可以从一个训练数据集中抽取卓见和复杂的模式并构建多层抽象。那么问题是,为啥不是所有人都用这种伟大的技术呢?当前对神经网络还存在两个大挑战。首先是训练深度网
22、络需要大量的算力,第二是需要巨大的训练数据集。用强大的 GPU服务器训练几百万图像的数据集可能需要花费数天甚至是数周。当然,要获得最好的训练结果,需要不同的网络设计组合和算法,还需要很多的实验和失败。但在不远的未来,全程可控的分布式训练和预测服务诸如支持 TensorFlow 的谷歌云机器学习或许可以用大量的云结构的 CPU 和 GPU 在一个能支付得起的费用下解决这些问题,也许会对所有人开放巨大的深度神经网络。致谢使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第16页/共17页非常感谢 DavidHa、EtsujiNakai、ChristopherOlah
23、和 AlexandraBarrett 对本文的审查改进以及提出宝贵意见。特别需要感谢 TensorFlow Playground 的作者 Daniel Smilkov、ShanCarter 和 D.Sculley,他们为这一炫酷平台做出了巨大的贡献。使用Tensorflow PlayGround理解神经网络安天技术公益翻译组献译第17页/共17页安天简介安天是引领威胁检测与防御能力发展的网络安全国家队,安天依托下一代威胁检测引擎、主动防御内核等自主先进技术、“赛博超脑”支撑平台和专家团队,为用户提供端点防护、流量监测、快速处置、深度分析等产品,以及安全管理、威胁情报、态势感知和靶场演练等解决方
24、案。安天为国家主管部门、军队、保密、部委行业等高安全需求部门,提供高级威胁和新兴威胁解决方案和能力体系,产品与服务保障了“载人航天”、“探月工程”、“空间站对接”、“大飞机首飞”等重大国防军工任务。安天也是全球重要的基础安全供应链上的核心节点,全球近百家著名安全厂商、IT 厂商选择安天作为检测能力合作伙伴,安天的检测引擎为全球近十万台网络设备和网络安全设备、超过十亿部智能设备提供安全防护。其中移动检测引擎是全球首个获得 AV-TEST 年度奖项的中国产品。安天技术实力得到行业管理机构、客户和伙伴的认可,安天已连续五届蝉联国家级安全应急支撑单位资质,亦是中国国家信息安全漏洞库六家首批一级支撑单位之一。安天是中国应急响应体系中重要的企业节点,在红色代码、口令蠕虫、心脏出血、破壳、魔窟等重大安全威胁和病毒疫情方面,提供了先发预警和全面应急支撑。安天针对震网、毒曲、火焰、沙虫、方程式、白象等 APT 组织或 APT 行动,进行了深度的解析,对捍卫国家主权、安全和发展利益形成了有利的支撑。欢迎您访问安天网站(http:/ 或致电 010-82893723。