人工智能-神经网络

目录

1 神经元

2 MP模型

3 激活函数

      3.1 激活函数

      3.2 激活函数作用

      3.3 激活函数有多种

4、神经网络模型

5、神经网络应用

6、存在的问题及解决方案

6.1 存在问题

6.2 解决方案-反向传播


1 神经元

       神经元是主要由树突、轴突、突出组成,树突是从上面接收很多信号,经过轴突处理后传递给突触突触会进行选择性向下一级的树突传递信号。突触输出的信号只有两种可能,要么输出,要么不输出,即只有0和1两种情况。

       在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

 下图错误请忽略(留作自用)

2 MP模型

       每个神经网络单元抽象出来的数学MP模型如下,也叫感知器,它接收多个输入(x1,x2,x3...),产生一个输出 即 y= W1X1+W2X2+W3X3+...+WnXn + b。

       这就好比是神经末梢感受各种外部环境的变化(感知外部刺激),产生不同的电信号(也就是输入:x1,x2,x3...xn),这些强度不同(也就是参数w1,w2,w3...wn)的电信号汇聚到一起,会改变这些神经元内的电位,如果神经元的电位超过了一个“阈值”(参数 b),它就会被激活(激活函数),即“兴奋”起来,向其他神经元发送化学物质。

        MP模型:麦卡洛克一皮茨模型(McCulloch-Pitts model )简称,一种早期的神经元网络模型.

       由美国神经生理学家麦卡洛克(McCulloch, W.)和数学家皮茨 <Pitts,W.)于1943年共同提出。设有n个神经元相互连结,每个神经元的状态Si (i=1,2,…,n)取值0或1,分别表示该神经元的抑制和兴奋,每个神经元的状态都受其他神经元的制约,B是第i个神经元的阂值,W是神经元i与神经元J 之间的连结强度。

MP模型过程:

  • 每个神经元都是一个多输入端
  • 如x1,x2,x3
  • 每个输入都会乘以权重w1,w2,w3
  • 再加一个阈值 b
  • 最后我们会得到 y = w1x1 + w2x2 + w3x3 + b
  • 最终我们得到一个值 y
  • 得到这个值后是否会向下游输出则取决于激活函数f(x)
  • 向下游输出的结果Oj的值要么是0,要么是1。

3 激活函数

      3.1 激活函数

        就是人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

      3.2 激活函数作用

       如果不用激活函数:每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
        如果使用激活函数:激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

      3.3 激活函数有多种

  • Sigmoid激活函数

        Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间 。

  • ReLU函数

       Relu激活函数(The Rectified Linear Unit),用于隐层神经元输出。

  • Tanh函数

       Tanh是双曲函数中的一个,Tanh()为双曲正切。在数学中,双曲正切“Tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。

4、神经网络模型

       单个的感知器(也叫单感知机)就构成了一个简单的模型(MP模型),但在现实世界中,实际的决策模型则要复杂得多,往往是由多个感知器组成的多层网络,如下图所示,这也是经典的神经网络模型(也叫多感知机,也叫人工神经网络),由输入层、隐含层、输出层构成。

       人工神经网络可以映射任意复杂的非线性关系,具有很强的鲁棒性、记忆能力、自学习等能力,在分类、预测、模式识别等方面有着广泛的应用。 

5、神经网络应用

      神经网络如何帮助我们做一些事情呢?例如语音如何识别?例如图片如何识别?

      其本质上都是可以转换为数字,将转换后的数字通过神经网络进行操作。

      例如下图,图像显示的是字母X,是一个单通道的5x5=25个像素的黑白图像(像素值只有0和255)。它代表的就是一堆数字(x1,x2,...,x25)=(0,255,255,0,....225,0),这堆数字就是代字母表X。

      我们就是通过训练,找到一堆参数,来判断它是不是一个字母X。

      目前我们判断图片是不是x,只是通过一层的1个神经元(一个神经元MP模型)就可以判断。 

      当然,这个1层单个神经元需要的找到的参数是25个参数(W1,W2,W3,...,W25)。

      如果是 彩色图像,就是3通道 5*5*3 个像素,1层单个神经元需要的找到的参数就是75个参数(W1,W2,W3,...,W75)。

        所以,从本质上讲,无论什么图,本质上都是一堆数字,我们就是把这些数字输入到神经元中进行训练参数,直到找到一个误差最小的函数,这就是成功的训练。

     但在现实世界中,实际的决策模型则要复杂得多,例如阅读文章、语音识别、图像识别等,仅仅用一层神经元很难达到效果。于是就需要使用多层神经元,就是多层神经网络模型。

    首先先有一个输入,输入端连接第一隐层的每一个神经元,第一隐把这些数据输出后,选择向下游输出到第二隐层,第二隐层输出结果输出到第三隐层。这就是所谓的多层神经网络。
每两层的神经网络连接都会有大量的参数,通过一定的算法,能让大量的参数调节到最优,使得最后的误差函数最小,这样就是一个成功的训练。

6、存在的问题及解决方案

6.1 存在问题

      我上面可以说是使用一层单个神经元训练需要找到(单通道)25个或(3通道)75个参数,使用的是全连接方式 y=W1X1+W2X2+W3X3+...+W25X25+b 或y=W1X1+W2X2+W3X3+...+W25X75+b ,但全连接网络存储在最大问题就是太复杂。

例如 有 5x5 图片,有三层神经网路,每个神经网络层有25个神经元。
        25个像素(x1,x2,...,x25)作为输入,
        输入到第1层第1个神经元需要确定25个参数
        输入到第1层第2个神经元需要确定25个参数
        ....
        输入到第1层第25个神经元需要确定25个参数
        因此(x1,x2,...,x25)输入到第1层25个神经元需要参数 25 *25 = 625
        第1层25个神经元的输出结果又是新的输入(x1,x2,...,x25)
        同理,(x1,x2,...,x25)输入到第2层25个神经元需要参数 25 *25 = 625
        同理,(x1,x2,...,x25)输入到第3层25个神经元需要参数 25 *25 = 625
        因此3层神经网络就需要 625 * 3 = 1875 个 参数需要调。
     
        这还是在 5x5 最简单的图片神经网络才3层的情况下,如果图片是彩色的呢?如果图片是1个比较的图片(3000x1000)呢?如果是彩色大图且网络层数更多如10层呢?

        此时的参数量就是 3000x1000 x 3000x1000 x 10 = 300000000000 。这时候识别起来就会更复杂,计算也比较慢。

        这也是前几次人工智能陷入低谷的原因。因为不管是算力还是算法,都跟不上。

6.2 解决方案-反向传播

        正因为存在上述问题,所以采用辛顿提出的反向传播算法,即BP算法。

       BP算法在调整参数时候,不用向以前一样调参,可以先调最后一层,调完最后一层往前调,最后调到最前面一层。这种算法就叫反向传播。这种算法比以前算法复杂度要低得多。所以 反向传播算法 也引领了第三次人工直智能的浪潮。

       到这里初步有了对人工智能的粗浅的认识。

7 反向传播

   见 人工智能反向传播

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

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

相关文章

flutter开发实战-实现webview与Javascript通信JSBridge

flutter开发实战-实现webview与H5中Javascript通信JSBridge 在开发中&#xff0c;使用到webview&#xff0c;flutter实现webview是使用原生的插件实现&#xff0c;常用的有webview_flutter与flutter_inappwebview 这里使用的是webview_flutter&#xff0c;在iOS上&#xff0c;…

如何定制自己的应用层协议?|面向字节流|字节流如何解决黏包问题?如何将字节流分成数据报?

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量干货博客汇总https://blog.csdn.net/yu_cblog/c…

怎么把pytorch从CPU版本替换成GPU版本

使用pip命令pip uninstall torch就可以卸载当前的torch版本。&#xff08;不是cpu版本一般也没有必要重装吧&#xff1f;&#xff09; 接着找到官网https://pytorch.org/get-started/locally/ 在里面选择 根据你自己的需要选择最新的&#xff08;我现在是11.8&#xff09;或者没…

机器学习之随机森林(Random forest)

1 什么是随机森林 随机森林是一种监督式算法&#xff0c;使用由众多决策树组成的一种集成学习方法&#xff0c;输出是对问题最佳答案的共识。随机森林可用于分类或回归&#xff0c;是一种主流的集成学习算法。 1.1 随机森林算法原理 随机森林中有许多的分类树。我们要将一个输…

怎么使用Netty解码自定义通信协议

网络协议的基本要素 一个完备的网络协议需要具备哪些基本要素 魔数&#xff1a;魔数是通信双方协商的一个暗号&#xff0c;通常采用固定的几个字节表示。魔数的作用是防止任何人随便向服务器的端口上发送数据。协议版本号&#xff1a;随着业务需求的变化&#xff0c;协议可能…

OpenCV(图像处理)-图片搜索

图片搜索 1.知识介绍2.实现流程2.1 计算特征点与描述子2.2 描述子的匹配2.3 求出单应性矩阵并画出轮廓2.4 将特征点标出 此篇博客作者仍在探索阶段&#xff0c;还有一些模糊的概念没有弄懂&#xff0c;请读者自行分辨。 1.知识介绍 Opencv进行图片搜索需要的知识有&#xff1…

Leetcode-每日一题【147.对链表进行插入排序】

题目 给定单个链表的头 head &#xff0c;使用 插入排序 对链表进行排序&#xff0c;并返回 排序后链表的头 。 插入排序 算法的步骤: 插入排序是迭代的&#xff0c;每次只移动一个元素&#xff0c;直到所有元素可以形成一个有序的输出列表。 每次迭代中&#xff0c;插入排序…

青岛大学_王卓老师【数据结构与算法】Week05_09_顺序栈的操作3_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

ELK搭建

ELK介绍&#xff1a; ELK是一组开源工具的缩写&#xff0c;它由Elasticsearch、Logstash和Kibana三个组件组成&#xff0c;用于处理、分析和可视化大量日志数据。 入门级ELK搭建&#xff08;无Docker环境&#xff09; 安装前准备 1.获取安装包 https://artifacts.elastic…

Objective-C 父元素和子元素的点击事件

场景&#xff1a; &#xff08;需求1&#xff09;pageA一开始是【默认模式】&#xff0c;点击父元素view&#xff08;包括【搜索】文字&#xff09;&#xff0c;进入【搜索模式】&#xff1b; &#xff08;需求2&#xff09;在pageA中&#xff0c;点击【取消】文字时&#xff…

如何快速制作一个奶茶店小程序商城

如果你是一个奶茶店的老板&#xff0c;你可能会考虑开设一个小程序商城来增加销售渠道和提升品牌形象。那么&#xff0c;如何快速制作一个奶茶店小程序商城呢&#xff1f;下面我们将介绍一个简单的步骤供你参考。 首先&#xff0c;你需要登录乔拓云平台进入商城后台管理页面。在…

用ChatGPT解析Wireshark抓取的数据包样例

用Wireshark抓取的数据包&#xff0c;常用于网络故障排查、分析和应用程序通信协议开发。其抓取的分组数据结果为底层数据&#xff0c;看起来比较困难&#xff0c;现在通过chatGPT大模型&#xff0c;可以将原始抓包信息数据提交给AI进行解析&#xff0c;本文即是进行尝试的样例…

互联网行业真的不行了吗?

文章目录 前言一、起因二、互联网真的完了吗&#xff1f;三、是不是要转行&#xff1f;四、十年磨一剑五、统一回复 前言 英雄算法联盟 - 七月集训 已经开始 16 天&#xff0c;八月算法集训 将于 08月01日 正式开始&#xff0c;目前已经提前开始报名&#xff0c;报名方式参见&a…

OpenCv之滤波器

目录 一、卷积 二、方盒滤波与均值滤波 三、高斯滤波 四、中值滤波 五、双边滤波 一、卷积 图像卷积就是卷积核在图像上按行华东遍历像素时不断的相乘求和的过程 相关知识点: 步长:就是卷积核在图像上移动的步幅.(为充分扫描图片&#xff0c;步长一般为1)padding:指在图片…

matlab学习指南(1):matlab初步入门详细介绍

&#x1f305;*&#x1f539;** φ(゜▽゜*)♪ **&#x1f539;*&#x1f305; 欢迎来到馒头侠的博客&#xff0c;该类目主要讲数学建模的知识&#xff0c;大家一起学习&#xff0c;联系最后的横幅&#xff01; 喜欢的朋友可以关注下&#xff0c;私信下次更新不迷路&#xff0…

sqlite3交叉编译

1、交叉编译sqllite3可以先从官网下载最新最新的源码进行编译。sqlite3下载sqlite3有两种版本的源代码&#xff0c;sqlite-amalgamation-3420000.zip这种是将所有的操作放到sqlite3中进行使用的。虽然官方推荐使用这种方法。但是对于嵌入式移植还是使用sqlite-autoconf-3420000…

探索基于300W-LP的3D人脸关键点检测

目录 前言一、&#xff13;D 关键点可视化二、使用步骤1.300W-LP转为YOLO数据格式2.修改数据入口3.开始训练 总结 前言 300WLP数据集提供来丰富的人脸线索&#xff0c;包括&#xff12;D或&#xff13;D的关键点信息&#xff0c;Head Angle和&#xff13;DMM的参数等&#xff…

OpenCV中的RGB与YUV转换

1 基本概念 YUV 颜色空间从模拟电视时代开始就被广泛应用于彩色图像的转换与处理。其基于一个 3x3 的矩阵&#xff0c;通过线性变换将 RGB 像素转换为一个亮度&#xff08;Luma&#xff09;分量 Y 以及两个色度&#xff08;Chroma&#xff09;分量 U 和 V。由于模拟电视存在着多…

K8s 为什么要弃用 Docker

K8s 为什么要弃用 Docker 最近在学习容器技术的过程中&#xff0c;看到有关于Kubernetes“弃用 Docker”的事情&#xff0c;担心现在学 Docker 是否还有价值&#xff0c;是否现在就应该切换到 containerd 或者是其他 runtime。 随着深入了解&#xff0c;这些疑虑的确是有些道理…

git 工具使用--分支管理

git 工具使用–分支管理 文章目录 git 工具使用--分支管理理解分支创建分支切换分支合并分支删除分支合并冲突分支管理策略分支策略bug分支删除临时分支总结 理解分支 分支管理是Git的杀手级功能之一。分支&#xff1a;就是科幻中的平行宇宙&#xff0c;当你正在电脑面前学习C…