【深度学习】解析深度神经网络背后的数学原理

来源:产业智能官

解析深度网络背后的数学

如今,已有许多像 Keras, TensorFlow, PyTorch 这样高水平的专门的库和框架,我们就不用总担心矩阵的权重太多,或是对使用的激活函数求导时存储计算的规模太大这些问题了。基于这些框架,我们在构建一个神经网络时,甚至是一个有着非常复杂的结构的网络时,也仅需少量的输入和代码就足够了,极大地提高了效率。无论如何,神经网络背后的原理方法对于像架构选择、超参数调整或者优化这样的任务有着很大的帮助。


图一   训练集可视化

举个例子,我们将利用上图展示的训练集数据去解决一个二分类问题。从上面的图可以看出,数据点形成了两个圆,这对于许多传统的机器学习算法是不容易的,但是现在用一个小的神经网络就可能很好地解决这个问题了。为了解决这个问题,我们将构建一个神经网络:包括五个全连接层,每层都含有不同数目的单元,结构如下:


图二   神经网络架构

其中,隐藏层使用 ReLU 作为激活函数,输出层使用 Sigmoid。这是一个非常简单的架构,但是对于解决并解释这个问题已经足够了。

用 KERAS 求解

首先,先给大家介绍一个解决方法,使用了一个最受欢迎的机器学习库—— KERAS 。

from keras.models import Sequentialfrom keras.layers import Densemodel = Sequential()model.add(Dense(4, input_dim=2,activation='relu'))model.add(Dense(6, activation='relu'))model.add(Dense(6, activation='relu'))model.add(Dense(4, activation='relu'))model.add(Dense(1, activation='sigmoid'))model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])model.fit(X_train, y_train, epochs=50, verbose=0)正如我在简介中提到的,少量的输入数据和代码就足以构建和训练出一个模型,并且在测试集上的分类精度几乎达到 100%。概括来讲,我们的任务其实就是提供与所选架构一致的超参数(层数、每层的神经元数、激活函数或者迭代次数)。先给大家展示一个超酷的可视化结果,是我在训练过程中得到的:

图三   训练中正确分类区域的可视化

现在我们来解析这背后的原理。

什么是神经网络?

让我们从关键问题开始:什么是神经网络?它是一种由生物启发的,用来构建可以学习并且独立解释数据中联系的计算机程序的方法。如上图二所示,网络就是各层神经元的集合,这些神经元排列成列,并且相互之间连接,可以进行交流。

单个神经元

每个神经元以一组 x 变量(取值从 1 到 n )的值作为输入,计算预测的 y-hat 值。假设训练集中含有 m 个样本,则向量 x 表示其中一个样本的各个特征的取值。此外,每个单元有自己的参数集需要学习,包括权重向量和偏差,分别用  w 和 b 表示。在每次迭代中,神经元基于本轮的权重向量计算向量 x 的加权平均值,再加上偏差。最后,将计算结果代入一个非线性激活函数 g。我会在下文中介绍一些最流行的激活函数。



图四   单个神经元

单层

现在我们看一下神经网络中整体的一层是怎么计算的。我们将整合每个单元中的计算,进行向量化,然后写成矩阵的形式。为了统一符号,我们选取第 l 层写出矩阵等式,下标 i 表示第 i 个神经元。

图五   单层神经网络

注意一点:当我们对单个单元写方程的时候,用到了 x 和 y-hat,它们分别表示特征列向量和预测值。但当我们对整个层写的时候,要用向量 a 表示相应层的激活值。因此, 向量 x 可以看做第 0 层输入层的激活值。每层的各个神经元相似地满足如下等式:

为了清楚起见,以下是第二层的所有表达式:

可见,每层的表达式都是相似的。用 for 循环来表示很低效,因此为了加速计算速度我们使用了向量化。首先,将权重向量  w 的转置堆叠成矩阵 W。相似地,将各个神经元的偏差也堆在一起组成列向量 b。由此,我们就可以很轻松地写出一个矩阵等式来表示关于某一层的所有神经元的计算。使用的矩阵和向量维数表示如下:

多样本向量化

到目前为止,我们写出的等式仅包含一个样本。但在神经网络的学习过程中,通常会处理一个庞大的数据集,可达百万级的输入。因此,下一步需要进行多样本向量化。我们假设数据集中含有 m 个输入,每个输入有 nx 个特征。首先,将每层的列向量 x, a, z 分别堆成矩阵 X, A, Z。然后,根据新的矩阵重写之前的等式。

什么是激活函数?我们为什么需要它?

激活函数是神经网络的关键元素之一。没有它们,神经网络就只是一些线性函数的组合,其本身也只能是一个线性函数。我们的模型有复杂度的限制,不能超过逻辑回归。其中,非线性元保证了更好的适应性,并且能在学习过程中提供一些复杂的函数。激活函数对学习的速度也有显著影响,这也是在选择时的评判标准之一。图六展示了一些常用的激活函数。近年来,隐藏层中使用最广的激活函数大概就是 ReLU 了。不过,当我们在做二进制分类问题时,我们有时仍然用 sigmoid,尤其是在输出层中,我们希望模型返回的值在 0 到 1 之间。

图六   常用激活函数及其导数函数图像

损失函数

关于学习过程进展的基本的信息来源就是损失函数值了。通常来说,损失函数可以表示我们离 “理想” 值还差多远。在本例中,我们用 binary crossentropy(两元交叉熵)来作为损失函数,不过还有其他的损失函数,需要具体问题具体分析。两元交叉熵函数表示如下:

下图展示了在训练过程中其值的变化,可见其值随着迭代次数如何增加与减少,精度如何提高


图七   训练过程中精确度及损失的变化

神经网络如何学习?

学习过程其实就是在不断地更新参数 W 和 b 的值从而使损失函数最小化。为此,我们运用微积分以及梯度下降的方法来求函数的极小。在每次迭代中,我们将分别计算损失函数对神经网络中的每个参数的偏导数值。对这方面计算不太熟悉的小伙伴,我简单解释一下,导数可以刻画函数的(斜率)。我们已经知道了怎样迭代变量会有怎么样的变化,为了对梯度下降有更直观的认识,我展示了一个可视化动图,从中可以看到我们是怎么通过一步步连续的迭代逼近极小值的。在神经网络中也是一样的——每一轮迭代所计算的梯度显示我们应该移动的方向。而他们间最主要的差别在于,神经网络需要计算更多的参数。确切地说,怎么计算如此复杂的导数呢?

图八   动态梯度下降

反向传播算法

反向传播算法是一种可以计算十分复杂的梯度的算法。在神经网络中,各参数的调整公式如下:

其中,超参数 α 表示学习率,用以控制更新步长。选定学习率是非常重要的——太小,NN 学习得太慢;太大,无法达到极小点。用链式法则计算 dW 和 db —— 损失函数对 W 和 b 的偏导数, dW 和 db 的维数与 W 和 b 相等。图九展示了神经网络中的一系列求导操作,从中可以清楚地看到前向和后向传播是怎样共同优化损失函数的。


图九   前向与后向传播

结论

希望这篇文章对各位小伙伴理解神经网络内部运用的数学原理有所帮助。当我们使用神经网络时,理解这个过程的基本原理是很有帮助的。文中讲述的内容虽然只是冰山一角,但都是我认为最重要的知识点。因此,我强烈建议大家能试着独立地去编一个小的神经网络,不要依赖框架,仅仅只用 Numpy 尝试一下。

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487303.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

unity android 分包,Unity以分包(obb)形式集成到安卓原生 我慢慢填坑

Unity以分包(obb)形式集成到安卓原生 我慢慢填坑Unity以分包(obb)形式集成到安卓原生 我慢慢填坑工作中有需要将unity项目集成到安卓原生中,随着工作推进需要分包去发布到google ,那么这时候就需要在unity出包时进行分包(android project obb)。使用方法…

73岁Hinton老爷子构思下一代神经网络:属于无监督对比学习

机器之心报道编辑:魔王、杜伟在近期举行的第 43 届国际信息检索年会 (ACM SIGIR2020) 上,Geoffrey Hinton 做了主题为《The Next Generation of Neural Networks》的报告。Geoffrey Hinton 是谷歌副总裁、工程研究员,也是 Vector Institute 的…

面向对象引子

描述两个角色: 1 def hum(name,age,job):2 """这是代表一个人"""3 data {4 name:name,5 age:age,6 job:job7 }8 9 return data 10 11 def dog(name,type): 12 """这是代表一条旺财…

下一个十年的C位:物联网产业全景解析

来源:北京物联网智能技术应用协会导语:庄子曰:“天地与我并生,而万物与我为一”庄子将天地万物与人平等对待,打破了“以人类为中心”的桎梏。如果说互联网是以“人的需求”为中心构建的,那么物联网&#xf…

[数据挖掘]朴素贝叶斯分类

写在前面的话: 我现在大四,毕业设计是做一个基于大数据的用户画像研究分析。所以开始学习数据挖掘的相关技术。这是我学习的一个新技术领域,学习难度比我以往学过的所有技术都难。虽然现在在一家公司实习,但是工作还是挺忙的&…

网页html语言怎么看,怎样查看网页的css代码?

怎样查看网页的css代码?下面本篇文章给大家介绍一下。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。怎样查看网页的css代码?要查看一个网站使用了什么css代码,可以通过在网站空白处右键&#xff0c…

【精彩文章】数学家论数学——数学的本质

来源:数学算法俱乐部罗巴切夫斯基任何一门数学分支,不管它如何抽象,总有一天会在现实世界中找到应用.罗巴切夫斯基(Н.И.лобачевский,1792~1856,俄国数学家)是非欧几何的创始人之一&#xff0c…

HTML将canvas画布鼠标事件,HTML5 Canvas鼠标与键盘事件demo示例

演示html5 canvas鼠标事件,获取canvas对象上的鼠标坐标,演示键盘事件通过键盘控制canvas上对象移动。canvas对象支持所有的javascript的鼠标事件,包括鼠标点击(mouseclick), 鼠标按下(mouse down), 鼠标抬起(mouse up),鼠标移动( mouse move)…

js——正则整理

1、示例 匹配网址url function IsURL(str_url){var strRegex "^((https|http|ftp|rtsp|mms)?://)" "?(([0-9a-z_!~*().&$%-]: )?[0-9a-z_!~*().&$%-])?" //ftp的user "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.…

天价!一款芯片从设计到流片需要45亿!3纳米芯片研发成本曝光

来源:EETOP综合整理自IBS、科技新报英特尔宣布7纳米制程要延后半年问世,使晶圆代工龙头台积电有机会受惠英特尔扩大外包生产,竞争对手AMD 也因英特尔7纳米延后,产品持续维持竞争优势,两家公司股价都大涨。只是英特尔7纳…

EUV光刻机全球出货量达57台

来源:内容编译自「semiwiki」,谢谢。IMEC是推动半导体技术前进的主要组织之一,日前,他们举办了一场线上论坛,谈及了对芯片现状和未来的看法。在演讲中,ASML总裁则对光刻的发展进行了演讲。从他的PPT中可以看…

一个计算机台式机的组装方案,既能带又便宜的电脑组装方案,华擎deskmini310组装晒单...

既能带又便宜的电脑组装方案,华擎deskmini310组装晒单2019-04-17 10:39:4425点赞61收藏30评论前段时间家中的台式机陆陆续续已近阳寿,再组装一台机器的念头就油然而生。常年浏览大妈家的我发现了一样小众但蛮出名的迷你机箱——华擎deskmini310&#xff…

FPGA的历史、现状和未来

来源:AI前线作者:Oskar Mencer 等译者:盖磊策划:陈思FPGA 自上世纪 80 年代进入市场以来,就与通用 CPU、ASIC 乃至 GPU 竞争共存。FPGA 的低功耗、可编程、规格适中等特性,使其在市场中占据一席之地。本文分…

模型性能评估-混淆矩阵简介

混淆矩阵 Positive - 正例Negative (N) - 负例 结果: 预测为正类别 预测为负类别 真实为正类别 True Positive (TP) False Negative (FN) 真实为负类别 False Positive (FP) True Negative (TN)TP - 预测 P, 实际 P, 模型预测正确FP - 预测 P, 实际 N, 模…

观点|重磅出炉!29页《业内观点:机器人行业的未来》

来源:硅谷浦发银行未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业…

出道即巅峰,掀起AI领域巨浪的GPT-3,被过誉了吗?

机器之心报道编辑:蛋酱、杜伟、小舟是时候重新审视这个「无所不能的」模型了!GPT-3,「出道即巅峰」界的代表。2020 年 5 月,OpenAI 高调推出了一款具有 1750 亿参数的自回归语言模型「GPT-3」,在人工智能领域掀起了一阵…

虎贲计算机二级视频解析百度云,详解虎贲T7520:5G为什么需要全场景覆盖增强技术?...

紫光展锐近期发布了采用6nm EUV工艺的新一代5G SoC“虎贲T7520”, 先进的工艺、低功耗的系统设计,大幅提升的AI算力和多媒体影像处理能力,将为5G智能体验带来更好的选择。值得注意的是,基于第二代马卡鲁5G技术平台,虎贲…

“万物就只是5万亿个参数”,AI模型GPT-3让人怀疑人生

本文转自开源中国这几天轰动硅谷的 GPT-3 是什么来头?相信不太了解 AI 的朋友这几天也或多或少看到了一些关于 GPT-3 的重磅消息,甚至有媒体称其为 “继比特币之后又一个轰动全球的现象级新技术”。请注意,现在站在你面前的是:互联…

06_jQuery_内容过滤

HTML代码&#xff1a; <div>John Resig</div><div>gggg resig</div><div>Malcom John sinclai</div><div>J.ohn</div>jQuery代码&#xff1a; $(function(){$("div:contains(John)").css("text-decoration&quo…

从技术角度探讨:深度传感器行业有哪些发展机会

来源&#xff1a;仪商网以前&#xff0c;我们一直认为传统相机将3D世界转换为2D图像&#xff0c;已可以满足我们对于图像的应用&#xff0c;而2D图像中丢失的三维似乎并不重要。但随着计算机视觉&#xff08;CV&#xff09;的飞速发展以及与深度学习的结合&#xff0c;许多雄心…