热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

神经网络传递函数与激活函数,人工神经网络中的激活函数

由于本人知识有限,文章有少部分参考网上,如有侵权,请告知!首先我们想到利用最简单的单层感知机来解决,单层感知机可以画出一条直线,把平面分开,如图2所示。图2:单层

这周本来想写一篇个人笔记,关于神经网络中反向传播算法识别手写字符的实现。但是,在整理自己的思路的时候,发现本人把之前看的许多神经网络的东西都给忘了,内心很是着急啊!在看到激活函数的时候,突然不知道激活函数是干嘛用的!立马翻遍手里的纸质资料,都说的模糊不清。无奈,赶紧来网上看看!下面,我就把在网上看到的知识点,总结一下,形成读书笔记,方便大家学习!由于本人知识有限,文章有少部分参考网上,如有侵权,请告知!我会及时修改、删除!

一、 激活函数出现的原因 思考这么一个问题:
现在有一个二分类问题,我们要将下面的三角形和圆点进行正确的分类,如图1所示。我们试着用神经网络解决这个问题。跟大家说明一下,这是一个线性不可分的问题,就是你在这个平面里,找不到一条直线可以把图中的三角形和圆点完全分开。如果你能找到,算你厉害!


图1:二分类问题
解决思路:
(1)用不带激活函数的单层感知机来解决。
首先我们想到利用最简单的单层感知机来解决,单层感知机可以画出一条直线,把平面分开,如图2所示。

图2:单层感知机分割平面
我来简单的解释一下图2。在图2中,左图是一个单层的感知机结构,其中W1、W2是网络上权重,b是偏置量。左图是一个没有激活函数单层感知机,它的工作原理是:输入特征X1和特征X2,如果y>0,证明是正类;如果y<0,证明是负类。我们这里不讨论y=0的特殊情况。根据单层感知机的工作原理,我们画出右边的坐标图。

总结:不带激活函数的单层感知机是一个线性分类器,不能解决线性不可分的问题。

(2)用不带激活函数的多个感知机来解决。
不带激活函数的单层感知机解决不了问题,那我们就会想到用多个感知机进行组合,获得更强的分类能力,看看能不能解决我们的线性不可分问题。如图3所示。

图3 多个感知器
图3中,我们已经得到了多感知器分类器了,那么它的分类能力能否解决我们的线性不可分的问题呢?我们来分析一下,来对y进行一个合并同类项,整理后的公式如下: y=X1(W1-11W2-1+W1-12W2-2+W1-13W2-3)+X2(W1-21W2-1+W1-22W2-2+W1-23W2-3)+W2-1b1-1+W2-2b1-2+W2-3b1-3
大家看一下,合并后的式子,还是一个关于X1和X2的线性表达式,合并后的多个感知器本质上还是一个线性分类器,还是解决不了非线性的问题。 不管是单层感知机还是多个感知器,只要不带激活函数,都只能解决线性可分的问题。解决不了我们的线性不可分问题。不信,那我们就在平面中画几条直线试试,结果发现这几条直线无论在平面中如何旋转,都不能完全正确的分开三角形和圆点。结果如图4所示。
图4:线性分类器解决不了问题

在上面的线性方程的组合过程中,我们其实类似的在做三条直线的线性组合,如图5所示。图5描述了,当我们直接用没有激活函数的分类器时,其实我们还是线性组合,最多也就是更复杂的线性组合罢了。有人在这里又要抖机灵了!我数学学的好,我记得学高等数学的时候,在不定积分那一块,有个画曲为直思想来近似求解。那么,我们可以来借鉴一下,用无数条直线去近似接近一条曲线,你很聪明啊!但是比着用非线性的激活函数来说,你这解决办法还是太低端了一些。
图5:没有激活函数的分类器
思考一个问题:抛开神经网络中神经元需不需要激活函数这点不说,如果没有激活函数,仅仅是线性函数的组合解决的问题太有限了,碰到非线性问题就束手无策了.那么加入激活函数是否能够解决呢? 二、激活函数作用 我们再设计一个神经网络,在所有的隐层和输出层加一个激活函数,这里激活函数我们就用Sigmoid函数,如图6所示。这样y输出的就是一个非线性函数了,y的输出更复杂,有了这样的非线性激活函数以后,神经网络的表达能力更加强大了。能不能解决我们一开始提出的线性不可分问题呢?我们接着来验证吧!
图6:带有非线性激活函数的感知机

我们把图6中的带有激活函数的单层感知机扩展到带有激活函数的多个神经元的情况。那么神经网络的表达能力更强,具体如图7所示。
图7:带有激活函数的多个神经元组成的神经网络


图8:带激活函数的非线性组合

和图7相对应的非线性组合是图8所示的样子。这样看起来,似乎已经能解决我们线性不可分的问题了。最后,我们通过最优化损失函数的做法,通过不断的学习,能够学到正确分类三角形和圆点的曲线。具体学到什么曲线,我们不知道,或许是图9所示的曲线,也可能是其他曲线。

图9:学习到的分类曲线

总结:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。 三、激活函数的实践 我们都知道异或问题是线性不可分的问题,那么我们可以用今天学的激活函数解决这个问题。我在之前学习周志华老师西瓜书时候,已经用RBF神经网络实现过,感兴趣的小伙伴可以参考一下。这是地址:http://blog.csdn.net/program_developer/article/details/72716316


本文参考:
以上图片大部分来自于@pgddqz的知乎回答。非常感谢!
知乎话题:https://www.zhihu.com/question/22334626
神经网络激励函数的作用是什么?有没有形象的解释? - 忆臻的回答 - 知乎https://www.zhihu.com/question/22334626/answer/147543436
神经网络激励函数的作用是什么?有没有形象的解释? - pgddqz的回答 - 知乎https://www.zhihu.com/question/22334626/answer/103835591
神经网络激励函数的作用是什么?有没有形象的解释? - lee philip的回答 - 知乎https://www.zhihu.com/question/22334626/answer/21036590
机器学习周志华西瓜书。第五章:神经网络。

关注微信公众号【Microstrong】,我写过4年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!欢迎扫描下方二维码关注交流!



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
author-avatar
CC_橙_CC
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有