京公网安备 11010802034615号
经营许可证编号:京B2-20210330
导论丨图说深度学习丨神经网络和 TensorFlow (附视频中字)
Youtube数据科学领域的热门博主sentdex,经常会分享关于Python和机器学习相关的教程,这次他用画图的形式讲解了深度学习、神经网络和TensorFlow。
CDA字幕组对该视频进行了汉化,附有中文字幕的视频如下:
针对不方面开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:
大家近况如何,欢迎观看机器学习系列教程。我们将讲解深度学习、神经网络、TensorFlow当然还有Python。
神经网络以任何方式来看都不新奇,但它现在是最先进的。并且它正在取得如今其他机器学习模型无法达到的成就,而且是很新的。
虽然神经网络从20世纪40年代就已经诞生,但直到最近才彰显它的价值。在1940年代它更像是一种概念,掌握它并无用武之地。
随后的19世纪70年代初,1974年Paul Werbos提出一种中和阈值的方法,这个我们待会再讲。这个方法起到了一点作用,但神经网络基本上都没什么价值。
直到2011或2012年左右,出现了深度学习和海量数据集,我们提出的神经网络在做一些不可思议的事。甚至我将提到的第一个例子也是如此。我认为它非常强大,体现了神经网络如何创造出数据模型。
神经网络从生物学的角度获得灵感。
它在1940年代诞生,那时我们对大脑深层所知甚少。如今我们还是几乎一无所知,我们认识很多知识,但并不知道大脑的运作方式。这是由生物学的启发。没有必要去了解一切事物是如何运作的,或者我们是如何思考 学习的,更多的是我们认为我们会怎么想诸如此类。所以不管怎样,历史并不有趣,言归正传让我们开始神经网络的学习吧。
首先我们了解下神经网络的原理,以及它的运作形式。很明显神经网络是神经元的网络,那么基本的神经元长什么样呢?
我现在画的东西叫做树突(dendrite)。然后将树突连接在一起,接着得到了细胞核(nucleus),往下是一个个的轴突(axon)。轴突末端(axon terminal)有很多弯弯曲曲的东西。所以蓝色箭头指向的是树突,就是这些。绿色的则是细胞核。接着是轴突最后是轴突末端。
神经网络拥有神经元网络,仅仅一个神经元不算两个才可以。第二个神经元在这儿。这些是树突,然后连接细胞核,再画出轴突和轴突末端。大功告成。现有的知识告诉我们,这两个神经元并不是真正地连结在一起。它们中间留有叫做突触(synapse)的部分,两神经元之间可以传递信息。
现在非常有趣的是,这些术语没有一个出现在神经网络中,即人工神经网络。所以每次我提到生物神经网络时,都会称为生物神经网络。但现在开始,我将人工神经网络称为神经网络。希望在讨论人工神经网络时你能明白。
非常有趣的是,在神经网络模型中不会用到树突、突触、轴突、轴突末端,总之不会用到它们,这真的很有意思。这是建模后的样子,这是我们试着建立的生物神经网络模型。发生了什么呢?
基本上你有了信息输入,在这种情况下看到红色箭头有三个输入。所以你从原始数据开始,可能依次是1 0 0之类的。这些输入进来,通过理论上的神经元,将数据输送到轴突。如果被激活的话则经过突触,传到下一个神经元。基本上就是这样。但有时候神经元没能激活,突触没有沟通等等。这是大脑中神经元工作的原理。
接下来我们来用下这个模型,建立神经元的模型,即我们怎样处理人工神经网络。那么让我们来进行建模。事实上,人工神经网络的神经元模型很相似。基本上一切都是从原始数据输入开始,最终它成为常规输入数据。
输入数据,我们有X1、X2和X3。事实上你可能会有更多的数据,比如刚刚提到的例子你会有784个初始输入值。所以很可能是一个庞大的数字。有了这些输入值之后,这些数据会构成一个总数。它们到时会进行加总,过程中会有权重。所以X1有权重1,X2有权重2,X3有权重3。每个都有独一无二的权重。因此你拿到这些原始数据后,将它们乘以各自的权重,全部相加就得到一个总数。现在,神经元根据输入,它可能激活也可能不激活。
如何决定它是否激活呢?它会经过一个阈值函数,大部分情况下被描绘成这样。有时候你会听到它被称作阶梯函数,因为它外形上很像一个阶梯。有时比如这个是0,一旦你经过了X特定的阈值,Y的返回值是1,正是y轴所在的地方。有时当你经过了特定的阈值会被激活,但若没用经过阈值则不会激活。
如果是人工神经网络则是对应数字0或1,两者中的一个。接着0和1,工神经网络中经过另一个人工神经元。0和1会转换成这些值之一。新的数据值到另一个连接的神经元,这个过程会继续,无论有多少隐蔽层。
现在你可能会有点困惑,这究竟是什么?让我们来看看,这是个单一神经元。通常人们不将阶梯函数作为阈值使用,因为0和1不合适。你宁愿选取那些有范围的等等。
因此通常情况下,人们不会使用阶梯函数,而是用S型函数。它之所以叫做S型函数,因为它的外形像S。这就是阈值函数,但它不再是阈值。实际上它称为激活函数。这是神经元的基本模型,但你构建网络时会分解。
输出Y是X和W的函数,此处这两者是向量 ,仅此而已。可能与S型函数会有一些关联,但在这里仅为X乘以W的函数。输入数据乘以权重。
这是一个神经元。现在让我们来看神经元网络的规模,看到神经元网络你大概会看到这样的内容。有X1、X2和X3,这是输入以及其他神经元。先是四个,再是三个,最后是一个。那接下来会发生什么呢?实际上再加两个,这无所谓。之后我们会讲到这点。
对于最基本的模型,所有输入数据都会经过神经元,这些都是相连的。每个连接都有唯一的相关权重,这些也是相连的。同样有唯一的权重,最后这些也两两相连,也有唯一的权重。这就是你的神经网络。这是你的输入,这是输入层。这个部分是隐蔽层1
这个部分是隐蔽层1,然后是隐蔽层2,最后是输出。
理论上输出会是1 0 1,可能有对应的内容。很多情况下 不会是1 0 1,在我们的例子中可能会是1 0 0或0 1 0等等。我会解释当中的原因。但对于我们的第一个例子这样可能更符合。
这是一个深度神经网络,我们刚刚建模的就是深度神经网络。为什么呢?因为这里有第二层隐蔽层,如果只有一层隐蔽层它就是常规神经网络。如果有两层及以上隐蔽层的话,那太棒了,你会得到一个深度神经网络。就这么简单。这就是为什么我不打算把神经网络和深度神经网络分开讲。因为它们其实是一回事,只是隐藏层的数目不同而已。在代码中你只是添加层数,但对建模来说 一层和十九层其实没什么差别。

那么有什么特别的?为什它过了这么久才渐渐成熟起来,最终成为我们所知最好的机器学习模型。
首先最关键的是,它需要大量的输入数据。
不是输入特征,这些是输入特征。它们不需要有很多,描述越多数量越大。但实际上,最大的问题是你拥有样本的数量。在第一个例子中我们使用训练的样本数量是6万。实际上是很少的,对于大多数做大型任务的商业神经网络来说,可能需要近5亿个样本。之后随着收益减弱不会再看到更好的结果了,但如今基本上需要这么多。
回想一下支持向量机(SVM),我们有一个凸优化(convex optimization)问题,在某种程度上说完美凸性。当你进行优化时,最优化的图像是这样的。所以如果想优化,你可以大步大步地提高,我们产生两大步,然后再小步,再更小。非常简单对吗?但是神经网络中你的优化图像可能像这样,有些奇怪的内容。所以优化问题并没有那么简单。
不仅如此,使用支持向量机时我们一般有两个变量W和B需要优化。然而在这个简单的神经网络中,我不准备计算这些线的数量。有很多连接,每条线都是唯一的权重。所以有很多独特的权重,这就有了很多变量。这是一个非常具有挑战性的优化问题,不仅是数学上的,对于计算的计算需求也是如此。而且你需要很多数据,因此需要很多样本、很多连接,样本数越多权重就越多。
如今我们现在有海量数据可用,以及有能处理和优化大量数据的计算机。所以当这两者结合在一起,使得神经网络得以改进并大放异彩。比方说简单的分类任务,神经网络与其它算法的表现很接近。比如支持向量机,假设在这个样本集上的正确率为97%,神经网络大概能达到98%或99%。就为了这么小小的1%的差别,有很多人在不断努力。人们花费很多年努力去弥补这小小的百分比差异,这非常重要。
但是对于我来说,这不如神经网络做的另一件事更让我感到雀跃。对于简单的分类工作确实做的不错,可以达到几乎相似的正确率,更让人惊叹的是神经网络的建模方面。实际上我们还不能完全理解,神经网络建立的模型到底是怎样运作的,但是它做得确实很好。可以挖掘和分析,启发我们揭示其中一些答案。
但由于我们面对的有很多变量,这还不太可能。比如我们来考虑这个问题:Jack 12岁,Jane 10岁,Kate比Jane大,比Jack小。那么Kate多少岁?你们大多数人可能没有跟上,但是如果你花时间想想,答案是11岁。
为了得到这个答案,可能要运到一点逻辑。这是机器学习算法直到最近才能做到的。它们擅长分类之类的任务,但是它们不擅长逻辑建模,或者想出如何对逻辑建模,直到最近。
如果你想构建算法去回答刚才那个问题,你需要以某种方式去构建那个逻辑,你需要了解大量语言学之类的知识。然而有了神经网络,你就不需要如此了。给神经网络提供一堆样本,就像我读取的那些 与答案搭配起来,一直重复几百万次。结果神经网络就能自己弄清楚,弄清楚如何逻辑建模,这一切都可以自己完成。这就是神经网络最出色的地方。
人们可能会问,怎么获取像这样上百万的数据呢?
你有几个选择,至少是免费的。一个是图片数据,比如ImageNet。你可以谷歌搜索一下ImageNet,它类似WordNet,如果你有关注TK series。如果你不熟悉的话,可以随意了解一下NL、TK或者ImageNet,你就能弄明白。总之,对于图像数据你可以使用ImageNet。
接下来对于文本数据,第一站应该是Wikipedia Data Dump。你可以获得维基百科整个转储,这是很酷的。接着神经网络就可以帮你建模了。有了维基百科你可以做很多有趣的事。可以通过聊天日志、爬取reddit网站等等,得到输入和输出。对于语音,我确实想不到还没有听说过关于大型语音转储的东西。不过有一个网站tatoba。
我知道的最大的数据集同时免费的是Common Crawl。你们大多数可能没有能够运行Common Crawl的计算机,除非你的SLI有大量GPU。为了让主板能够承载,你在SLI中必须有更多的GPU。总之可能机构才会有,如果你的雇主有大型服务器或者你很有钱,而且你可以买AWS等等。Common Crawl是不错的选择。它达到千兆字节,你需要硬盘才能存储这么多字节,祝你好运。
在进行机器学习中主要的障碍是数据集的获取。去哪里找大量的数据?你能想象处理几亿个样本吗?比如说字迹。你可以去到reddit的机器学习分类看看,问问有谁熟知数据集。很多情况下谷歌搜索找不到数据集,但是我通过自己的研究我偶然发现了各种数据集。所以你可以在reddit的机器学习分类,或者类似的网站上问一问。其他人可能会知道这些数据集。
总之这是很明显的了,为什么Facebook和Google之类的大公司看重AI,尤其是神经网络领域。他们拥有大量的数据集去做一些有趣的事情。
那么现在抛开这些不谈,我们怎样利用神经网络工作呢?
我们将使用TensorFlow。这是谷歌开发的一个比较新的包,在我录这段视频时还处于测试阶段,还有其他包来进行机器学习。比如Diono和Torch 工作原理基本一致。因为这些都可以归结为,我之前所展示的根本就是关于X和W的函数,仅此而已。
如果学会用TensorFlow做这些,其他的也没问题了。只需学习不同的语法,实际建模部分一样。所以只需挑选一个框架,我选了TensorFlow。因为TensorFlow有一些功能,我如今和之后都会用到,比如说分布式运算之类的。
之后我们将在Ubuntu上安装TensorFlow,可能还要用到Windows的虚拟机。你如果想很好的跟着课程也想在Ubuntu上安装TensorFlow。在什么操作系统上安装其实不重要,我就继续用Ubuntu了,因为我的TensorFlow就在Ubuntu上。如果你的是Mac也可以在Mac上运行TensorFlow,也可以把TensorFlow放在Windows的Docker上。
如果你有问题、评论等请大胆留言。感谢收看,下次见。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在回归分析的结果解读中,R方(决定系数)是衡量模型拟合效果的核心指标——它代表因变量的变异中能被自变量解释的比例,取值通 ...
2025-12-04在城市规划、物流配送、文旅分析等场景中,经纬度热力图是解读空间数据的核心工具——它能将零散的GPS坐标(如外卖订单地址、景 ...
2025-12-04在CDA(Certified Data Analyst)数据分析师的指标体系中,“通用指标”与“场景指标”并非相互割裂的两个部分,而是支撑业务分 ...
2025-12-04每到“双十一”,电商平台的销售额会迎来爆发式增长;每逢冬季,北方的天然气消耗量会显著上升;每月的10号左右,工资发放会带动 ...
2025-12-03随着数字化转型的深入,企业面临的数据量呈指数级增长——电商的用户行为日志、物联网的传感器数据、社交平台的图文视频等,这些 ...
2025-12-03在CDA(Certified Data Analyst)数据分析师的工作体系中,“指标”是贯穿始终的核心载体——从“销售额环比增长15%”的业务结论 ...
2025-12-03在神经网络训练中,损失函数的数值变化常被视为模型训练效果的“核心仪表盘”——初学者盯着屏幕上不断下降的损失值满心欢喜,却 ...
2025-12-02在CDA(Certified Data Analyst)数据分析师的日常工作中,“用部分数据推断整体情况”是高频需求——从10万条订单样本中判断全 ...
2025-12-02在数据预处理的纲量统一环节,标准化是消除量纲影响的核心手段——它将不同量级的特征(如“用户年龄”“消费金额”)转化为同一 ...
2025-12-02在数据驱动决策成为企业核心竞争力的今天,A/B测试已从“可选优化工具”升级为“必选验证体系”。它通过控制变量法构建“平行实 ...
2025-12-01在时间序列预测任务中,LSTM(长短期记忆网络)凭借对时序依赖关系的捕捉能力成为主流模型。但很多开发者在实操中会遇到困惑:用 ...
2025-12-01引言:数据时代的“透视镜”与“掘金者” 在数字经济浪潮下,数据已成为企业决策的核心资产,而CDA数据分析师正是挖掘数据价值的 ...
2025-12-01数据分析师的日常,常始于一堆“毫无章法”的数据点:电商后台导出的零散订单记录、APP埋点收集的无序用户行为日志、传感器实时 ...
2025-11-28在MySQL数据库运维中,“query end”是查询执行生命周期的收尾阶段,理论上耗时极短——主要完成结果集封装、资源释放、事务状态 ...
2025-11-28在CDA(Certified Data Analyst)数据分析师的工具包中,透视分析方法是处理表结构数据的“瑞士军刀”——无需复杂代码,仅通过 ...
2025-11-28在统计分析中,数据的分布形态是决定“用什么方法分析、信什么结果”的底层逻辑——它如同数据的“性格”,直接影响着描述统计的 ...
2025-11-27在电商订单查询、用户信息导出等业务场景中,技术人员常面临一个选择:是一次性查询500条数据,还是分5次每次查询100条?这个问 ...
2025-11-27对数据分析从业者和学生而言,表结构数据是最基础也最核心的分析载体——CRM系统的用户表、门店的销售明细表、仓库的库存表,都 ...
2025-11-27在业务数据可视化中,热力图(Heat Map)是传递“数据密度与分布特征”的核心工具——它通过颜色深浅直观呈现数据值的高低,让“ ...
2025-11-26在企业数字化转型中,业务数据分析师是连接数据与决策的核心纽带。但“数据分析师”并非单一角色,从初级到高级,其职责边界、能 ...
2025-11-26