百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

人工智能深度学习系统的基石——神经网络简介

wptr33 2025-02-28 17:40 19 浏览

神经网络简介

神经网络是深度学习系统的基石。为了在深度学习方面取得成功,我们需要从回顾神经网络的基础知识开始,包括架构神经网络算法等等

什么是神经网络?

神经网络技术起源于上世纪五、六十年代,当时叫感知机(perceptron),拥有输入层、输出层和一个隐含层

许多涉及智能、模式识别和物体检测的任务都极难自动化,但动物和幼儿似乎可以轻松自然地完成。例如,小孩子如何学会区分校车公交车之间的区别?我们自己的大脑是如何在不知不觉中每天下意识地执行复杂的识别任务的?我们是如何一眼就能区分猫与狗的?

我们每个人都包含一个现实生活中的生物神经网络,它与我们的神经系统相连——这个网络由大量相互连接的神经元(神经细胞)组成。

“人工神经网络”是一种试图模仿我们神经系统中的神经连接的计算系统。人工神经网络也被称为“神经网络”“人工神经系统”。通常缩写人工神经网络并将它们称为“ANN”或简称为“NN”

对于一个被视为神经网络的系统,它必须包含一个带标签的图结构,图中的每个节点都执行一些简单的计算。从图论中,我们知道图由一组节点(即顶点)和一组将节点对连接在一起的连接(即边)组成。在下图 中,我们可以看到此类 NN 图的示例。

一个简单的神经网络架构。输入呈现给网络。每个连接通过网络中的两个隐藏层承载一个信号。最后一个函数计算输出类标签。

每个节点执行一个简单的计算。然后,每个连接将信号(即计算的输出)从一个节点传送到另一个节点,用权重标记,指示信号被放大或减弱的程度。一些连接具有放大信号的正权重,表明信号在进行分类时非常重要。其他的具有负权重,降低了信号的强度,从而指定节点的输出在最终分类中不太重要。我们称这样的系统为人工神经网络

人工模型

让我们首先看看一个基本的神经网络,它对输入执行简单的加权求和。值x 1 、x 2和 x 3是我们 NN的输入,通常对应于我们设计矩阵中的单行(即数据点)。常数值 1 是我们的偏差,假定已嵌入到设计矩阵中。我们可以将这些输入视为神经网络的输入特征向量。

一个简单的神经网络,它采用输入x和权重w的加权和。这个加权和然后通过激活函数来确定神经元是否激活。

在实践中,这些输入可以是用于以系统的、预定义的方式量化图像内容的向量(例如,颜色直方图、定向梯度直方图、局部二进制模式等)。在深度学习的背景下,这些输入是图像本身的原始像素强度。

每个x通过一个由w 1 , w 2 , ..., w n组成的权重向量W连接到一个神经元,这意味着对于每个输入x,我们也有一个关联的权重w。

最后,右侧的输出节点取加权和,应用激活函数f(用于确定神经元是否“触发”),并输出一个值。以数学方式表达输出,通常会遇到以下三种形式:

? f ( w 1 x 1 + w 2 x 2 + ... + w n x n )

? f (∑ n i =1 w i x i )

? 或者简单地说,f ( net ),其中net = ∑ n i =1 w i x i

不管输出值如何表达,我们只是对输入进行加权求和,然后应用激活函数f

激活函数

最简单的激活函数是感知器算法使用的“阶跃函数”。

从上面的等式我们可以看出,这是一个非常简单的阈值函数。如果加权和 ∑ n i =1 w i x i > 0,则输出 1,否则输出 0。

沿x轴输入值,沿y轴绘制f ( net )的输出我们可以看到为什么这个激活函数由此得名。当net小于或等于零时,f的输出始终为零。如果net大于零,则f将返回 1。

左上角:阶跃函数。右上角: Sigmoid 激活函数。左中:双曲正切。中右: ReLU 激活(深度神经网络最常用的激活函数)。左下: Leaky ReLU,允许负数的 ReLU 变体。右下: ELU,ReLU 的另一种变体,其性能通常优于 Leaky ReLU。

然而,虽然直观且易于使用,但阶梯函数不可微,这可能会导致在应用梯度下降和训练我们的网络时出现问题。

相反,神经网络更常见的激活函数是 sigmoid 函数它遵循以下等式:

sigmoid 函数是比简单阶跃函数更好的学习选择,因为它:

  1. 处处连续且可微。
  2. 围绕y轴对称。
  3. 渐近地接近其饱和值。

这里的主要优点是 sigmoid 函数的平滑性使得设计学习算法变得更加容易。但是,sigmoid函数有两个大问题

  1. sigmoid 的输出不是以零为中心的。
  2. 饱和神经元基本上会杀死梯度,因为梯度的增量非常小。

直到 1990 年代后期,双曲正切或tanh(具有类似 sigmoid 的形状)也被大量用作激活函数:tanh的方程如下:

f ( z ) = tanh ( z ) = ( e z -e -z ) / ( e z + e -z )

所述的tanh函数零为中心,但是,当神经元变得饱和梯度仍然杀死。

我们现在知道激活函数有比 sigmoid 和tanh函数更好的选择。

f ( x ) = max (0 , x )

ReLU 也被称为“斜坡函数”,因为它们在绘制时的外观。注意函数对于负输入是如何为零的,但对于正值则线性增加。ReLU 函数是不可饱和的,并且在计算上也非常高效。

根据经验,在RELU激活功能趋于超越sigmoid 和tanh在几乎所有的应用功能。ReLU 激活函数比之前的激活函数家族具有更强的生物动机,包括更完整的数学理由。

截至 2015 年,ReLU 是深度学习中最流行的激活函数。然而,当我们的值为零时会出现一个问题——不能采用梯度。

ReLU 的一种变体,称为Leaky ReLU允许在单元不活动时使用小的非零梯度:

我们可以看到该函数确实允许采用负值,这与将函数输出为零的传统 ReLU 不同。

Parametric ReLUs,或简称 PReLUs,建立在 Leaky ReLUs 的基础上,允许参数α在一个激活的基础上学习,这意味着网络中的每个节点都可以学习与其他节点分开的不同“系数”。

最后,我们还有(ELU)激励函数 。

α的值是常数,并在网络架构实例化时设置——这与学习效率α 的PReLU 不同。对于一个典型的值αα = 1 ELU 通常比 ReLU 获得更高的分类准确率。

具有 3 个输入节点、具有 2 个节点的隐藏层、具有 3 个节点的第二个隐藏层以及具有 2 个节点的最终输出层的前馈神经网络示例。

使用哪个激活函数?

鉴于最近深度学习的普及,激活函数出现了相关的爆炸式增长。由于激活函数的选择数量众多,现代(ReLU、Leaky ReLU、ELU 等)和“经典”(step、sigmoid、tanh等),它可能看起来令人生畏,如何来选择合适的激活函数。

然而,在几乎所有情况下,建议从 ReLU 开始以获得基线准确度。从那里可以尝试将标准 ReLU 换成 Leaky ReLU 变体。

前馈网络架构

虽然有许多神经网络的前馈架构,最常见的结构是Feedforward网络

在这种类型的架构中,节点之间的连接只允许从第i层的节点到第i +1层的节点。不允许向后或层间接连接。当前馈网络包括反馈连接反馈到输入的输出连接)时,它们被称为循环神经网络

我们专注于前馈神经网络,因为它们是应用于计算机视觉的现代深度学习的基石。卷积神经网络只是前馈神经网络的一个特例。

为了描述一个前馈网络,我们通常使用一个整数序列来快速简洁地表示每一层的节点数。例如,上图中的网络是一个3-2-3-2前馈网络:

第 0 层包含 3 个输入,即我们的x i 值。这些可能是图像的原始像素强度或从图像中提取的特征向量。

第 1 层和第 2分别是包含 2 个和 3 个节点的隐藏层

第 3 层输出层或可见层——在那里我们可以从网络中获得整体输出分类。输出层通常具有与类标签一样多的节点;每个潜在输出一个节点。例如,如果我们要构建一个神经网络来对手写数字进行分类,我们的输出层将包含 10 个节点,每个节点代表0-9

神经网络有什么用?

当然,如果使用适当的架构,神经网络可用于监督、无监督和半监督学习任务。神经网络的常见应用包括分类、回归、聚类、矢量量化、模式关联和函数逼近等等

事实上,对于机器学习的几乎每个方面,神经网络都以某种形式得到应用。

1、无人驾驶汽车

无人驾驶使用到了很多人工智能方面的技术,其中一个计算机视觉便是使用CNN卷积神经网络让无人驾驶能够看到路面路况等

2、人脸识别

人脸识别的应用就比较广泛了,手机人脸解锁,人脸付款,人脸打卡等

3、机器翻译

随着人工智能学习能力的不断提升,机器翻译的准确性得到了大幅提高

4、声纹识别

生物特征识别技术包括很多种,除了人脸识别,目前用得比较多的还有声纹识别。声纹识别是一种生物鉴权技术,也称为说话人识别,包括说话人辨认和说话人确认。

声纹识别的工作过程为,系统采集说话人的声纹信息并将其录入 数据库 ,当说话人再次说话时,系统会采集这段声纹信息并自动与数据库中已有的声纹信息做对比,从而识别出说话人的身份。声纹解锁APP,控制智能家居等等

5、AI智能机器人

机器人的发展经历了漫长的发展,随着人工智能技术的发展,给机器人加上了智能的翅膀

6、智能家居

智能音箱,智能冰箱,洗衣机,空调,电视等等,随着人工智能技术的发展,现在的家庭家居貌似没有点人工智能的点缀,便不好意思立足家居行业

7、推荐系统

大量的数据喂给人工智能,给人带来了更多的便利推荐,个性化推荐系统广泛存在于各类网站和App中,本质上,它会根据用户的浏览信息、用户基本信息和对物品或内容的偏好程度等多因素进行考量,依托推荐引擎算法进行指标分类,将与用户目标因素一致的信息内容进行聚类,经过协同过滤算法,实现精确的个性化推荐。

8、图像搜索

大量浏览器中的相似图片搜索,该技术的应用与发展,不仅是为了满足当下用户利用图像匹配搜索以顺利查找到相同或相似目标物的需求,更是为了通过分析用户的需求与行为,如搜索同款、相似物比对等

9、大健康

未来医疗,大健康行业会越来越多地走入人类的生活,未来随着智能AI的加入,相信人类会提前预测自己的疾病,给人类带来更加美好的明天。

以上等等都会使用到人工智能的神经网络技术,就像人类一样,未来的机器会越来越多的有自己的神经网络,也会越来越聪明。

相关推荐

oracle数据导入导出_oracle数据导入导出工具

关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...

继续学习Python中的while true/break语句

上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个else解...

python continue和break的区别_python中break语句和continue语句的区别

python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...

简单学Python——关键字6——break和continue

Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...

2-1,0基础学Python之 break退出循环、 continue继续循环 多重循

用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...

Python 中 break 和 continue 傻傻分不清

大家好啊,我是大田。今天分享一下break和continue在代码中的执行效果是什么,进一步区分出二者的区别。一、continue例1:当小明3岁时不打印年龄,其余年龄正常循环打印。可以看...

python中的流程控制语句:continue、break 和 return使用方法

Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...

L017:continue和break - 教程文案

continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...

作为前端开发者,你都经历过怎样的面试?

已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...

面试被问 const 是否不可变?这样回答才显功底

作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...

2023金九银十必看前端面试题!2w字精品!

导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。答案:CSS的盒模型是用于布局和定位元素的概念。它由内容区域...

前端面试总结_前端面试题整理

记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...

2024前端面试真题之—VUE篇_前端面试题vue2020及答案

添加图片注释,不超过140字(可选)1.vue的生命周期有哪些及每个生命周期做了什么?beforeCreate是newVue()之后触发的第一个钩子,在当前阶段data、methods、com...

今年最常见的前端面试题,你会做几道?

在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...