社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

看完还不懂什么是深度学习神经网络我直接吃!

人工智能学习指南 • 2 月前 • 77 次点击  

图片

深度学习是一种机器学习技术,其核心思想是通过学习大量例子来进行学习。

从基础角度来看,深度学习通过构建多层神经网络模型,对输入的信息(如图像、文本或声音)进行逐层过滤和抽象,从而学习如何对这些信息进行预测和分类。

深度学习的灵感来源于人类大脑筛选信息的方式,其目的是模仿人类大脑的工作方式,实质上就是一个人工神经网络。

人类大脑中大约有1000亿个神经元,每个神经元都与大约10万个相邻神经元相连,我们某种程度上是在重新创造这一过程,但方式和层次都是为了让机器能够使用。

在我们的大脑中,一个神经元由胞体、树突和轴突组成,一个神经元的信号沿着轴突传递,然后转移到下一个神经元的树突,信号传递的连接点被称为突触,单个神经元本身并无太大用处,但当你拥有大量神经元时,却可以产生奇迹。

这正是深度学习算法背后的理念,你从观察中获取输入,并将这些输入放入一层中,该层创建一个输出,该输出又成为下一层的输入,以此类推,这个过程反复进行,直到你得到最终的输出信号!

神经元(节点)接收一个或多个信号(输入值),这些信号通过神经元传递,然后这个神经元输出信号,你可以将输入层想象成你的感官:比如你看到的、闻到的和感觉到的东西。

这些都是单个观察的独立变量,这些信息被分解成数字以及计算机可以使用的二进制数据位。

你需要对这些变量进行标准化或归一化,使它们处于相同的范围内。

它们使用多层非线性处理单元进行特征提取和转换,每一层都使用前一层的输出作为其输入。

它们所学的内容形成了一个概念层次结构,在这个层次结构中,每一层都学习将其输入数据转换为越来越抽象和复合的表示。


没有任何


这意味着对于一张图像,输入可能是一个像素矩阵,第一层可能编码边缘并组合像素。

下一层可能组合边缘的排列,再下一层可能编码鼻子和眼睛,再下一层可能识别出图像中包含一张脸,以此类推。


另外为了让大家可以更系统的学习人工智能(机器学习、深度学习、神经网络),小墨学长还为大家整理了一份60天入门人工智能机器学习、深度学习、神经网络)的学习路线,从基础到进阶都包含在内,希望可以帮助到大家。


图片

学习路线的资料都下载打包好了


大家可以添加小助手让她把学习路线的思维导图和相关资料一起发给你


图片


神经元内部发生了什么?

输入节点以数字形式接收信息,信息以激活值的形式呈现,每个节点都被赋予一个数字,数字越高,激活程度越大。

根据连接强度(权重)和传递函数,激活值传递到下一个节点。每个节点对其接收到的激活值进行求和(计算加权和),并根据其传递函数修改该和。

接下来,它应用一个激活函数,激活函数是应用于该特定神经元的函数,由此,神经元可以判断是否需要传递信号。

每个突触都被分配了权重,这对于人工神经网络(ANNs)至关重要,权重决定了ANNs的学习方式,通过调整权重,ANN决定信号传递的程度,当你训练网络时,你就是在决定如何调整权重。

激活信号在网络中传播,直到到达输出节点,然后输出节点以我们能够理解的方式提供信息。

你的网络将使用成本函数来比较输出和实际期望的输出,模型性能由成本函数评估。

它表示为实际值与预测值之间的差异,你可以使用许多不同的成本函数,你关注的是网络中的误差,你的目标是最小化损失函数。(本质上,损失函数越低,就越接近你期望的输出)。

信息会反馈回来,神经网络开始学习,目标是通过调整权重来最小化成本函数,这个过程被称为反向传播。

在前向传播中,信息被输入到输入层,并在网络中向前传播以获得我们的输出值。

我们将这些值与预期结果进行比较,接下来我们计算误差并将信息反向传播,这使我们能够训练网络并更新权重(反向传播允许我们同时调整所有权重)在此过程中,由于算法的结构方式,我们可以同时调整所有权重,这使得我们能够看到神经网络中每个权重对误差的哪一部分负责。

当将权重调整到最佳水平时,就可以进入测试阶段了!


人工神经网络是如何学习的?
要让程序按照你的意愿执行操作,有两种不同的方法。

首先,有特定引导和硬编程的方法,你明确告诉程序你想要它做什么。

然后是神经网络,在神经网络中你告诉网络输入和期望的输出,然后让它自己学习。

通过让网络自主学习,你可以避免输入所有规则的必要性,你可以创建架构,然后放手让它去学习。

一旦它训练完成,你就可以给它一张新图像,它将能够区分输出。


前馈网络和反馈网络
前馈网络是一个包含输入、输出和隐藏层的网络。信号只能向一个方向(向前)传播。

输入数据传入一个层,在那里进行计算,每个处理元素都根据其输入的加权和进行计算。

新值成为新输入值,这些值被送入下一层(前馈),这个过程一直持续,通过所有层,最终确定输出,前馈网络常用于数据挖掘等领域。

反馈网络(例如循环神经网络)具有反馈路径,这意味着它们可以使用循环让信号在两个方向上传播。

允许神经元之间存在所有可能的连接,由于这种类型的网络中存在循环,它成为一个非线性动态系统,该系统会不断变化,直到达到平衡状态。

反馈网络常用于优化问题,其中网络寻找相互关联因素的最佳排列。


什么是加权和?
神经元接收的输入可以是训练集中的特征,也可以是前一层神经元的输出。

两个神经元之间的每个连接都有一个独特的突触,并附带一个独特的权重。

要从一个神经元传递到下一个神经元,就必须沿着突触“付费”(即权重),神经元会对每个传入突触的加权输入求和,再应用一个激活函数。

它将结果传递给下一层的所有神经元,当我们谈论更新网络中的权重时,我们指的是调整这些突触上的权重。

神经元的输入是前一层所有神经元加权输出的总和,每个输入都会乘以与连接该输入到当前神经元的突触相关联的权重。

如果前一层有3个输入或神经元,那么当前层的每个神经元都会有3个不同的权重:每个突触一个。

简而言之,节点的激活函数定义了该节点的输出。

激活函数(或传递函数)将输入信号转换为输出信号,它将输出值映射到一个范围,如0到1或-1到1。

它是细胞动作电位发放速率的抽象表示,也是代表细胞发放可能性的一个数字。

在最简单的情况下,该函数是二进制的:是(神经元发放)或否(神经元不发放)。

输出可以是0或1(开/关或是/否),也可以在这个范围内的任何值。

例如,如果你使用一个将0到1范围内的值映射为图像是猫的可能性的函数,那么输出0.9就表示你的图像有90%的概率是一只猫。


什么是激活函数?
简而言之,节点的激活函数定义了该节点的输出。

激活函数(或传递函数)将输入信号转换为输出信号,它将输出值映射到一个范围,如0到1或-1到1。

它是细胞动作电位发放速率的抽象表示,也是代表细胞发放可能性的一个数字。

在最简单的情况下,该函数是二进制的:是(神经元发放)或否(神经元不发放),输出可以是0或1(开/关或是/否),也可以在这个范围内的任何值。

我们有哪些选择?激活函数有很多,但以下是四种非常常见的:


阈值函数
这是一个阶跃函数,如果输入值的总和达到某个阈值,则函数输出0,如果等于或大于0,则输出1。这是一个非常刻板、直接的“是”或“否”函数。


没有任何


Sigmoid函数
此函数用于逻辑回归,与阈值函数不同,它从0到1是平滑、渐进的,它在输出层中很有用,并且在线性回归中被大量使用。


没有任何


双曲正切函数
此函数与Sigmoid函数非常相似,但与Sigmoid函数从0到1不同,它的值会低于0,即从-1到1,尽管这与大脑中发生的情况不太相似,但在训练神经网络时,此函数能给出更好的结果,使用Sigmoid函数训练神经网络时,有时会遇到“停滞”的情况,当存在大量强烈负输入使输出保持在接近0的水平时,就会干扰学习过程。


没有任何


整流函数
这可能是神经网络领域中最受欢迎的激活函数,它最高效且生物学上最合理,尽管它在0处有一个拐点,但在拐点之后是平滑且渐进的,这意味着,例如,你的输出可以是“否”或“是”的某个百分比,此函数不需要归一化或其他复杂计算。


没有任何


如果你希望的值是二进制的,你在寻找“是”或“否”,你想使用哪个激活函数?

从上面的例子中,你可以使用阈值函数,或者选择Sigmoid激活函数。

阈值函数会给你“是”或“否”(1或0)。Sigmoid函数则能给出“是”的概率。

例如,如果你使用Sigmoid函数来确定一张图片是猫的可能性,那么输出0.9就表示你的图片有90%的概率是一只猫。


如何调整权重?

你可以使用暴力方法调整权重,并测试数千种不同的组合,但是即使是最简单的只有五个输入值和一个隐藏层的神经网络,你也将面对10⁷⁵种可能的组合。


梯度下降
但如果你使用梯度下降法,你可以观察权重的斜率角度,并判断它是正是负,以便继续沿下坡方向找到最佳权重,从而在追求达到全局最小值的过程中取得成功。

如果你使用梯度下降法,你可以观察权重的斜率角度,并判断它是正是负,这使你能够继续沿下坡方向找到最佳权重,从而在追求达到全局最小值的过程中取得成功。

梯度下降法是一种寻找函数最小值的算法,你会反复看到的类比是,有一个人被困在山顶,试图下山(找到最小值),浓雾弥漫,无法看清路径,所以她使用梯度下降法下到山脚,她观察自己所在位置的坡度,并沿着最陡峭的下降方向前进,你应该假设坡度不是显而易见的,虽然她有一个可以测量坡度的工具,但这个工具要花很长时间。

她想在天黑之前尽可能少地使用它下山,真正的困难在于,她需要决定多久使用一次这个工具,以免偏离轨道。

在这个类比中,人代表算法,山坡的陡峭程度代表该点误差表面的斜率。

她前进的方向代表该点误差表面的梯度,她使用的工具是微分(通过计算该点误差平方函数的导数来计算误差表面的斜率)。她在进行下一次测量前的行进速度代表算法的学习率,这个类比虽然不是非常合适,但能让你很好地理解梯度下降的大致含义。机器正在学习模型应采取的梯度(或方向),以减小误差。


没有任何


梯度下降要求成本函数是凸函数,但如果它不是凸函数呢?



普通的梯度下降算法会陷入局部最小值而非全局最小值,导致网络性能不佳。

在普通梯度下降中,我们将所有行数据输入到同一个神经网络中,查看权重,然后进行调整,这被称为批量梯度下降,在随机梯度下降中,我们一行一行地处理数据运行神经网络,查看成本函数调整权重然后处理下一行数据,本质上,你是针对每一行数据调整权重。

随机梯度下降具有更高的波动性,这有助于你找到全局最小值。它之所以被称为“随机”,是因为样本是随机打乱的,而不是作为单个组或按训练集中出现的顺序来处理。

它看起来可能更慢,但实际上更快,因为它不需要将所有数据加载到内存中,也不需要等待所有数据一起运行。

批量梯度下降的主要优点是它是一个确定性算法,这意味着如果你具有相同的初始权重,每次运行网络都会得到相同的结果。

随机梯度下降总是随机工作的(你还可以运行小批量梯度下降,即设置一定数量的行,一次运行这么多行,然后更新权重。)

已经提出了许多对基本随机梯度下降算法的改进,并得到了应用,包括隐式更新(ISGD)、动量法、平均随机梯度下降、自适应梯度算法(AdaGrad)、均方根传播(RMSProp)、自适应矩估计(Adam)等。


下面是一个使用随机梯度下降训练人工神经网络的快速流程:

  • 将权重随机初始化为接近0的小数值。

  • 将数据集的第一个观测值输入到输入层,每个特征对应一个输入节点。

  • 正向传播——从左到右,神经元被激活,每个神经元的激活都受到权重的限制。你传播激活值,直到得到预测结果。

  • 比较预测结果与实际结果,并测量产生的误差。

  • 反向传播——从右到左,误差被反向传播。根据权重对误差的负责程度更新权重。(学习率决定我们更新权重的多少。)

  • 强化学习(重复步骤1至5,并在每次观测后更新权重)或批量学习(重复步骤1至5,但只在处理完一批观测数据后更新权重)。

  • 当整个训练集通过人工神经网络时,这称为一个周期,重复多个周期。


另外我们精心打磨了一套基于数据与模型方法的 AI科研入门学习方案(已经迭代过5次),对于人工智能来说,任何专业,要处理的都只是实验数据,所以我们根据实验数据将课程分为了三种方向的针对性课程,包含时序、图结构、影像三大实验室,我们会根据你的数据类型来帮助你选择合适的实验室,根据规划好的路线学习 只需 5 个月左右(很多同学通过学习已经发表了 sci 二区及以下、ei会议等级别论文)学习形式为 直播+ 录播,多位老师为你的论文保驾护航,如果需要发高区也有其他形式。


图片

还有图结构、时序两个实验室(根据你的数据类型来选择)


大家感兴趣可以直接添加小助手微信:ai0808q   通过后回复咨询既可!


图片

大家觉得这篇文章有帮助的话记得分享给你的死党闺蜜、同学、朋友、老师、敌蜜!

B站:AI秃秃学长小墨


图片

关注小墨

获取最新AI技能+最肝AI干货

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179000
 
77 次点击