神经网络入门(一)

1简单模型 vs 复杂模型

  对于一个崭新的机器学习的任务,在模型选取和特征向量获取上通常我们会有两种选择方式:a. 简单模型 + 复杂特征项;b. 复杂模型 + 简单特征项。这两种方式各有各的优缺点:

1.1 简单模型

  对于简单模型来说,其优点是容易理解、可解释性较强,但是为了达到相对好的预测效果,我们通常会考虑对原始特征进一步抽象,增加大量的特征项来弥补model在处理非线性问题上的缺陷:

  假设我们现在有一个学习任务,首先我们抽取出100个不相关的特征属性,然后我们想要尝试使用逻辑回归(LR)模型,我们都知道LR是一种广义的线性模型,为了提高LR对非线性问题的处理能力,我们要引入多项式特征,为了充分考虑特征关联,通常我们也会执行特征之间交叉组合。若我们仅考虑2次项,也就是只考虑特征两两组合( ,这样我们也会得到接近5000个组合特征,若再考虑3次项,4此项呢?结果可想而知…!而随着初始特征n的增大,特征空间也会急剧膨胀。项数过多可能会带来的问题:模型容易过拟合、在处理这些项时计算量过大。

1.2 复杂模型

  对于神经网络这种复杂的模型,其缺点就是相对难理解、可解释性不强;优点是这种模型一般不需要像LR那样在特征获取上下这么大的功夫,它可以通过隐层神经元对特征不断抽象,从而自动发觉特征关联,进而使得模型达到良好的表型。下文,我们着重讨论一下,这一处处充满神秘的模型。

2初识神经网络(前馈)

  神经网络模型是参考生物神经网络处理问题的模式而建立的一种复杂网络结构。在神经网络中,神经元又称激活单元,每个激活单元都会采纳大量的特征作为输入,然后根据自身特点提供一个输出,供下层神经元使用。logistic神经元的图示如下:

其中,表示偏置项,它通常作为模型(单元)的固有属性而被添加到模型中,一般取值为1;是模型参数,又称为权重,起到放大或缩小输入信息的作用;而logistics神经元会将输入信息进行汇总并添加一个非线性变换,从而获得神经元输出。神经网络就是由多个这样的logistics神经元按照不同层次组织起来的网络,每一层的输出都作为下一层的输入,如下图:

这是一个包含一个隐层的神经网络结构。其中,Layer1为输入层,Layer2为隐层,Layer3为输出层。

2.1模型表示

  下面我们用数学符号来描述上述的神经网络模型。首先我们进行符号约定,如下:

    

故:

使用向量化的方式,可以表示成:

  

  

这也是前馈神经网络从输入变量获得输出结果的数学表示。

2.2模型理解

  为了更加清晰的认识神经网络,我们可以将上图中的Layer1遮住,那么剩下的Layer2和Layer3就像是一个LR模型,其与真正LR的不同在于输入向量的差异:普通LR的输入向量是原始特征向量,而该模型的输入是(经过学习后得到的特征属性)。

因此,对神经网络更直观的理解就是,它通过大量的隐层网络将输入向量进行一步步抽象(加权求和+非线性变换),生成能够更加容易解释模型的复杂新特征,最后将这些强大的新特征传入输出层获得预测结果。就像,单层神经元(无隐层)无法表示逻辑同或运算,但是若加上一个隐层结构就可以轻松表示出逻辑同或运算!

    上面所说是二分类问题的假设模型,其实神经网络模型也非常擅长处理多分类任务。与二分类不同的时,多分类模型最后的输出层将是一个K维的向量,K表示类别数。

3 神经网络的学习

  有了上面的描述我想大家对前馈神经网络应该已经有了一个全面的认识,那么接下来进入本文讨论的重点内容-神经网络的学习过程。神经网络的学习同其他模型的学习,首先我们要确定其损失函数,然后对参数进行估计,最后确定模型用于预测。本文针对分类问题中的神经网络模型的学习过程进行讨论。

3.1 代价函数

  在分类问题,我们知道使用交叉熵误差函数而不是平方和误差函数,会使得训练速度更快,同时也提升了泛化能力。对于二元分类问题来说,神经网络可以使用单一的logistics神经元作为输出,同时也可以使用两个softmax神经元作为输出。对于多分类问题,同样有两方面的思考:

  1. 对于类别之间有交集的多分类问题,我们可以将多分类看成多个相互独立的二元分类问题,这时我们使用logistics输出神经元,而误差函数采用交叉熵误差函数
  2. 对于类别之间互斥的多分类问题,通常使用softmax输出神经元,误差函数同样采用交叉熵误差函数

下面我们将会介绍更加具有一般性的多分类的神经网络的损失函数。首先假设神经网络的输出单元有K个,而网络的第k个神经元的输出我们用表示,同时其目标用表示,基于两种不同的考量角度,损失函数被给出:

3.1.1 类别之间有交集的多分类问题

  对于此类问题,我们可以将多分类看成多个相互独立的二元分类问题,每个输出神经元都有两种取值(t=0,1),并且输出神经元之间相互独立,故给定输入向量时,目标向量的条件概率分布为:

取似然函数的负对数,可以得到下面的误差函数:

3.1.2 类别之间互斥的多分类问题

  对于该问题,我们通常用"1-of-K"的表示方式来表示类别,从而网络的输出可以表示为:,因此误差函数为:

而网络输出的计算通常使用Softmax函数:

这里 表示第i个样本第k个输出单元的输出值,是一个概率值。对于正则化项,我们依然采用l2正则项,将所有参数(不包含bias项的参数)的平方和相加,也就是不把i=0时的参数加进入

3.2 反向传播算法

  绝大部分的训练算法都会涉及到用迭代的方式最小化误差函数和一系列的权值更新操作。具体来说,一般的训练算法可以分为两个阶段:

  1. 第一阶段:求解误差函数关于权值(参数)的导数。(bp)
  2. 第二阶段:用得到的导数进一步计算权值的调整量。(梯度下降等优化算法)

反向传播(bp)算法主要应用第一阶段,它能非常高效的计算这些导数

3.2.1 误差函数导数的计算

  接下来我们将会学习到bp算法是如何计算误差函数导数的。

  首先为了使得推导过程更加直观,我们将会使用一个简单的层次网络结构说明(这个层次网络有两层sigmoid隐层神经元、误差函数使用均方误差函数)。网络结构如图:

        

像前面提到的我们做如下符号约定:

            

  首先考虑一个简单的线性模型,其中输出是输入变量的线性组合:

                         (1)

给定一个特定的输入模式n(x, t),则其误差函数为:

                        (2)

则这个误差函数关于参数的梯度为:

                        (3)

此时误差函数的梯度可以表示为与链接的输出端相关联"误差信号"和与链接输入端相关联的变量乘积。(交叉熵误差函数也有类似的结果!)

  接下来计算神经网络中误差函数关于参数的梯度。首先,因为误差函数中只有加权求和项与参数,故可以通过链式求导法则得到:

                (4)

同上面线性函数的表示方式,我们通常引入新的符号:

                            (5)

用其来表示与链接的输出端相关联"误差信号",此时误差函数关于参数的梯度可以写成:

                    (6)

这个式子告诉我们:要求的导数 = 权值输出端单元的误差项 * 权值输入端单元的激活值。因为每个结点的激活值在前馈阶段已经得出,因此,为了计算导数,我们只需要计算网络中每个隐层结点和输出结点的"误差信息"即可,然后应用(6)式得到导数值!

  接下来带来了一个问题,每个隐层结点和输出结点的"误差信息"怎么计算?对于输出结点来说,第k个结点的误差等于该结点的输出值与目标值之间的差:

        输出结点(线性激活函数)误差         (7)

为了计算隐层结点的误差值,我们再次使用链式法则:

        隐层结点的误差

                      (8)

可见,l层第j个结点的误差取决于当前结点的激活值、l+1层结点的误差、以及l+1层结点于当前结点的链接权值。这种从输出到输入推导误差的方式叫做误差的反向传播。

公式说明: (8)式中的求和项是对所有与j单元有权值链接的上层单元进行求和。(8)式遵循了一个事实,l层第j个结点通过第l+1层所有与其关联的结点间接对误差函数产生影响!(以下是PRML中的图,可以帮助理解)

  

3.2.2 反向传播算法描述

    首先,通过正向传播,找到所有隐层神经元和输出单元的激活;

    使用(7)式得到所有输出单元的误差;

    然后,利用误差的反向传播公式(8),获得网络中所有隐层神经元的误差;

    最后,使用公式(6)计算得到误差函数相对于所有权值的导数。

注意:上述得到的导数只是对于单个样本而言的,因为开始时我们设定了训练样本只有一个(x,t),若使用多个训练样本,可以通过加和的形式求的导数:

而有了梯度,我们接下来就可以使用梯度下降(SGD)更新权值参数了。

3.3 实用技巧

  通过上面的讲述我们应该明白了神经网络中权值参数是如何更新的。下面我们将介绍一些在应用的实用技巧:

3.3.1 梯度检验

  当我们对神经网络使用梯度下降时,使用bp计算的导数通常不知道是否正确,进而不能保证最终的结果是否将会是最优解。为了解决这个问题,通常对一些测试样例执行梯度检验操作,确保对于检验的样例通过数值计算的导数与通过bp得到的导数有着相近的结果(最多可以差几位小数),导数的数值计算如下:

        

注意:若反向传播计算导数的开销为O(W),那么数值方法计算导数的时间复杂度为O(W^2)。故我们可以看出,数值方法计算导数时间复杂度比bp算法要高的多,所以当我们已经确认了反向传播算法正确执行时,在执行优化算法之前必须关掉梯度验证过程,否则训练过程将会非常缓慢!

3.3.2 随机初始化

  首先要明确像LR那样将所有权值参数都初始化为0的操作在神经网络中是行不通的!若在神经网路中将所有权值都置为0或其它相同的值,这样我们第二层神经元所有激活单元都会有相同的值,这代表了计算神经元的高度冗余,这将导致神经网路功能的单一!从而训练不出有效解决问题的神经网络模型。为了避免这种问题的出现,通常采用随机初始化的思想,将所有的参数都初始化为 之间的值。

3.4 对神经网络的几点思考

神经网络和感知器的区别:神经网络的隐层神经元使用的是连续的Sigmoid非线性函数,而感知器使用阶梯函数这一非线性函数。这意味着神经网络函数对网络参数来说是可微的,这一性质在神经网络训练过程中起这重要的作用。

隐藏层的激活函数不可以取线性函数的原因:如果所有隐藏层神经元的激活函数都取线性函数的话,那么我们将总能找到一个没有隐藏层的网络与之等价。这是因为,多个线性变换的组合,也是一个线性变换(多个线性变换的组合可以用一个线性变换代替)。此时,如果隐藏层神经元的数量少于输入或输出神经元的数量,那么这个网络所产生的变换就不是一般意义上的从输入到输出的线性变换,这是因为隐含单元出现的维度降低造成了信息丢失。

实际应用中的神经网络结构:输入层单元数 = 特征的维度;输出层单元数 = 类别个数; 隐层单元数理论上是越多越好,但是单元数越多意味着计算量越大,故其取值一般稍大于传入特征数或者几倍关系也可以。基于隐藏层的数目,一般默认使用1个隐层的神经网络,也可以使用多个隐层的神经网络,若为多层神经网路一般默认所有隐层具有相同的单元数。

神经网络中的参数更新:一般使用随机梯度下降法(SGD),而非批量梯度下降,原因是:1. SGD可以更加高效的处理数据中的冗余性(假设我们将数据集中所有样本都复制一次,这样包含了一半的冗余信息,使用PGD的计算量也会增大一倍,而SGD不受影响);2. 有机会跳出局部最小值到达全局最小值(因为整个数据集的关于误差函数的驻点通常不会是每个数据点各自的驻点)

分类: 机器学习篇
<div id="blog_post_info">
好文要顶 关注我 收藏该文
ML小菜鸟
关注 - 4
粉丝 - 128
+加关注
2
0
<div class="clear"></div>
<div id="post_next_prev"><a href="https://www.cnblogs.com/lianyingteng/p/7821256.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/lianyingteng/p/7821256.html" title="发布于 2017-11-13 14:21">ML - 特征选择</a>
<br>
<a href="https://www.cnblogs.com/lianyingteng/p/7988779.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/lianyingteng/p/7988779.html" title="发布于 2017-12-05 18:48">K-means 算法</a>

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

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

相关文章

我用ChatGPT写神经网络:一字不改,结果竟很好用

自从去年底推出以来&#xff0c;对话式 AI 模型 ChatGPT 火遍了整个社区。 ChatGPT 的确是一个了不起的工具&#xff0c;就像一个「潘多拉魔盒」。一旦找到正确的打开方式&#xff0c;你或许会发现&#xff0c;自己再也离不开它了。 作为一个全能选手&#xff0c;人们给 Chat…

我用ChatGPT写神经网络:一字不改,结果竟然很好用!

点击下方卡片&#xff0c;关注“CVer”公众号 AI/CV重磅干货&#xff0c;第一时间送达 点击进入—>CV微信技术交流群 转载自&#xff1a;机器之心 | 编辑&#xff1a;蛋酱 AI 写 AI&#xff0c;来得比预料中更快一些。 自从去年底推出以来&#xff0c;对话式 AI 模型 ChatGP…

关于香港高防IP需要关注的几个问题

从游戏网站到大型企业&#xff0c;每个人都担心分布式拒绝服务攻击的威胁。在应对这方面&#xff0c;香港高防IP针对服务器和IP提供防护支持的业务类型较多(覆盖金融、电商、游戏等各类业务)。但还有很多企业对于香港DDoS高防IP持观望状态&#xff0c;没涉入之前&#xff0c;可…

查询聊天好友IP地址(自用)

查询聊天好友IP地址&#xff08;自用&#xff09; 以PC端的QQ为例Waring 有时候我们会因为种种原因&#xff08;遇到诈骗消息之类&#xff08;狗头保命&#xff09;&#xff09;&#xff0c;如果我们已经发现对方身份可疑&#xff0c;可以通过一个小技巧来获取对方的IP地址。 以…

能上网的ChatGPT,会带来什么改变

最近关注AI的人&#xff0c;应该会注意到这条新闻。 ChatGPT官方推出新模式—Default&#xff08;GPT-3.5&#xff09;with browsing 这个是之前ChatGPT没有的功能&#xff0c;ChatGPT以前的训练数据是在2021年左右&#xff0c;并不知道最近的新闻。 现在ChatGPT 能够联网以…

AI歌手:新晋挑战者还是未来主流的替代者?

AI歌手&#xff1a;新晋挑战者还是未来主流的替代者&#xff1f; 近日&#xff0c;一款名为“AI孙燕姿”的AI歌手火遍全网&#xff0c;其翻唱的林俊杰的《她说》、周杰伦的《爱在西元前》、赵雷的《成都》等歌曲让网友纷纷表示&#xff1a;“听了一晚上&#xff0c;出不去了。…

ChatGPT+Martech开启无限可能丨数据猿3月份选题月(预告)

数字科技对经济发展的战略价值日益凸显&#xff0c;同时&#xff0c;数字科技本身发展日新月异&#xff0c;新技术、新模式层出不穷&#xff0c;创新企业、产品不断涌现。为了帮助大家更好理解数字科技的最新发展态势&#xff0c;数据猿联合上海大数据联盟&#xff0c;联合推出…

Stable Diffusion - ChatGPT 与 Stable Diffusion 结合提供无限创意构图

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131782672 ChatGPT 和 StableDiffusion 结合使用的优势&#xff1a; 高效率&#xff1a;ChatGPT 可以在很短的时间内完成复杂的语言任务&#xf…

chatGPT之小白使用技巧 - 无限追问 +无限摇人

chatGPT之小白使用技巧 - 无限追问 无限摇人 大家好&#xff0c;我是如何人工智能&#xff0c;这篇文章&#xff0c;我会通过分享最简单易上手的ChatGPT技巧&#xff0c;来解决一个纯小白的困境 针对GPT"我现在什么都不懂&#xff0c;该怎么办? 这边给出的解决方法是:无…

微信回应 WeTool 被封事件;支付宝小程序开放直播功能;Raspberry Pi 4 发布 8GB 版本| 极客头条...

整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧&#xff0c;智能播报由标贝科技提供技术支持。 「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的…

PC微信小程序突然Charles抓不到包(内含最新替代方案)

摘要&#xff1a;最近突然出现PC端微信小程序抓不到包&#xff0c;我就很奇怪&#xff0c;明明前几天还好好的&#xff0c;怎么就不行了呢&#xff0c;通过我在网上查阅方案得 以解决&#xff0c;下面记录一下过程。 最新替代方案&#xff1a; HTTP Debugger 使用这个抓包工具…

charles抓电脑版微信小程序包失败解决方案

参考&#xff1a;charles抓电脑版微信小程序包失败 现象&#xff1a;charles网页抓包正常&#xff0c;微信小程序抓包charles页面啥也不显示。 解决方案&#xff1a; 1.关闭防火墙。 2.删除小程序runtime包里的内容。 打开任务管理器&#xff0c;找到对应的微信小程序&…

charles抓电脑版微信小程序包失败【亲测有效】

Charles抓取微信电脑版小程序 1、先从微信中打开小程序 2、然后打开任务管理器&#xff0c;找到小程序的应用 3、右键点开小程序&#xff0c;打开文件所在位置&#xff0c;找到个Runtime包 4、 将小程序和微信都关闭掉&#xff08;否则部分文件删除不掉&#xff09;&#xff…

ChatGPT正在杀死程序员的求知欲 -- 关于ChatGPT出现后C站问答社区的乱象

声明&#xff1a;本文并没有针对任何个人和组织&#xff0c;只是依据本人看到的现象就事论事&#xff0c;给CSDN的发展做出建议。因为本文会提出一些社区的不足之处&#xff0c;对于牵扯某些个人的例子会进行模糊处理&#xff0c;但可能会有些犀利&#xff0c;请审核谅解一下并…

众多匿名社交小程序惨遭封杀?

这是第一次&#xff0c;一段时间内&#xff0c;成千上万人都在转这两张图和小程序识别码。已经成为“爆款专家”的朋友印象&#xff0c;第一次出手小程序就表现不凡&#xff0c;栗浩洋和魏志成再一次证明了他们病毒传播的产品力。可以说&#xff0c;这是小程序红利第一次淋漓尽…

ChatGPT中国赛开卷!互联网大佬自掏5000万美元入坑,张朝阳反泼冷水

视学算法报道 编辑&#xff1a;编辑部 【导读】ChatGPT&#xff0c;仿佛开启了第四次工业革命。国外大厂打得昏天黑地&#xff0c;国内互联网玩家也纷纷入局&#xff0c;匆忙抢占赛道。留给我们的时间不多了&#xff01; ChatGPT&#xff0c;已经炸醒了国内创投圈。去年圈内躺…

不得不用ChatGPT的100个理由……

❝ 最近无论在哪&#xff0c;很多人都在吹ChatGPT无所不能&#xff0c;动不动就是AI要颠覆人类&#xff0c;很多人害怕有一天AI会取代自己&#xff0c;我认为明显是多虑了…… ❝ 当然&#xff0c;也有很多小白试用了ChatGPT之后&#xff0c;并没有感觉到他很强大&#xff0c;主…

讯飞发布星火认知大模型 刘庆峰:10月底整体赶超ChatGPT

雷递网 乐天 5月7日 科大讯飞昨日发布星火认知大模型。科大讯飞董事长刘庆峰表示&#xff0c;认知大模型成为通用人工智能的曙光&#xff0c;科大讯飞有信心实现“智能涌现”。当前讯飞星火认知大模型已经在文本生成、知识问答、数学能力三大能力上已超ChatGPT。 刘庆峰公布大模…

教育企业纷纷押宝ChatGPT,如何避免学生滥用是个大问题- DoNews专栏

作为史上用户增速最快的消费级应用&#xff0c;2023 年以来&#xff0c;ChatGPT 在中文互联网行业掀起了一阵旋风。一时间&#xff0c;百度、腾讯、阿里巴巴等互联网企业纷纷宣布将推出自家的 ChatGPT 产品。ChatGPT「出圈」后&#xff0c;教育企业也试图来分一杯羹。 由于可以…

有道周枫谈ChatGPT:让Transformer在智能硬件里更高效运行

雷递网 乐天 2月23日 教育科技公司网易有道&#xff08;NYSE&#xff1a;DAO&#xff09;今日公布2022年第四季度及2022财年未经审计财务报告。财报显示&#xff0c;网易有道2022年四季度净收入达到14.5亿元&#xff0c;同比增长38.6%&#xff0c;首次实现单季度经营利润为正。…