人工智能 -- 神经网络

1、什么是神经网络

什么是人工智能?通俗来讲,就是让机器能像人一样思考。这个无需解释太多,因为通过各种科幻电影我们已经对人工智能很熟悉了。大家现在感兴趣的应该是——如何实现人工智能?

从1956年夏季首次提出“人工智能”这一术语开始,科学家们尝试了各种方法来实现它。这些方法包括专家系统,决策树、归纳逻辑、聚类等等,但这些都是假智能。直到人工神经网络技术的出现,才让机器拥有了“真智能”。

为什么说之前的方法都是假智能呢?因为我们人类能清清楚楚地知道它们内部的分析过程,它们只是一个大型的复杂的程序而已;而人工神经网络则不同,它的内部是一个黑盒子,就像我们人类的大脑一样,我们不知道它内部的分析过程,我们不知道它是如何识别出人脸的,也不知道它是如何打败围棋世界冠军的。我们只是为它构造了一个躯壳而已,就像人类一样,我们只是生出了一个小孩而已,他脑子里是如何想的我们并不知道!这就是人工智能的可怕之处,因为将来它有可能会觉得我们人类不应该活在这个世界上,而把我们消灭掉为此,世界上已经成立了不少安全协会来防范人工智能。

在这里插入图片描述

人工神经网络是受到人类大脑结构的启发而创造出来的,这也是它能拥有真智能的根本原因。在我们的大脑中,有数十亿个称为神经元的细胞,它们连接成了一个神经网络。
在这里插入图片描述
人工神经网络正是模仿了上面的网络结构。下面是一个人工神经网络的构造图。每一个圆代表着一个神经元,他们连接起来构成了一个网络。
在这里插入图片描述
人类大脑神经元细胞的树突接收来自外部的多个强度不同的刺激,并在神经元细胞体内进行处理,然后将其转化为一个输出结果。如下图所示。
在这里插入图片描述
人工神经元也有相似的工作原理。如下图所示。
在这里插入图片描述
上面的x是神经元的输入,相当于树突接收的多个外部刺激。w是每个输入对应的权重,它影响着每个输入x的刺激强度。

大脑的结构越简单,那么智商就越低。单细胞生物是智商最低的了。人工神经网络也是一样的,网络越复杂它就越强大,所以我们需要深度神经网络。这里的深度是指层数多,层数越多那么构造的神经网络就越复杂。

训练深度神经网络的过程就叫做深度学习。网络构建好了后,我们只需要负责不停地将训练数据输入到神经网络中,它内部就会自己不停地发生变化不停地学习。打比方说我们想要训练一个深度神经网络来识别猫。我们只需要不停地将猫的图片输入到神经网络中去。训练成功后,我们任意拿来一张新的图片,它都能判断出里面是否有猫。但我们并不知道他的分析过程是怎样的,它是如何判断里面是否有猫的。就像当我们教小孩子认识猫时,我们拿来一些白猫,告诉他这是猫,拿来一些黑猫,告诉他这也是猫,他脑子里会自己不停地学习猫的特征。最后我们拿来一些花猫,问他,他会告诉你这也是猫。但他是怎么知道的?他脑子里的分析过程是怎么样的?我们无从知道~~

2、如何将数据输入到神经网络中

我们需要弄懂的第一步就是如何将数据输入到神经网络中。例如,在我们百度的“小度智能屏”中,是如何将麦克风采集到的音频数据输入到神经网络中的;小度智能屏还能根据人脸来判断年龄从而自动切换成人和儿童模式,那它又是如何将摄像头采集到的人脸数据输入到神经网络中的。

下面我拿识别女优的例子来给大家介绍如何将女优的图片数据输入到神经网络中。
在这里插入图片描述
此例中,待输入的数据是一张图像。为了存储图像,计算机要存储三个独立的矩阵(矩阵可以理解成二维数组,后面的教程会给大家详细讲解),这三个矩阵分别与此图像的红色、绿色和蓝色相对应(世界上的所有颜色都可以通过红绿蓝三种颜色调配出来)。如果图像的大小是64 * 64个像素(一个像素就是一个颜色点,一个颜色点由红绿蓝三个值来表示,例如,红绿蓝为255,255,255,那么这个颜色点就是白色),所以3个64 * 64大小的矩阵在计算机中就代表了这张图像,矩阵里面的数值就对应于图像的红绿蓝强度值。上图中只画了个5 * 4的矩阵,而不是64 * 64,为什么呢?因为没有必要,搞复杂了反而不易于理解。

为了更加方便后面的处理,我们一般把上面那3个矩阵转化成1个向量x(向量可以理解成1 * n或n * 1的数组,前者为行向量,后者为列向量,向量也会在后面的文章专门讲解)。那么这个向量x的总维数就是64 * 64 * 3,结果是12288。在人工智能领域中,每一个输入到神经网络的数据都被叫做一个特征,那么上面的这张图像中就有12288个特征。这个12288维的向量也被叫做特征向量。神经网络接收这个特征向量x作为输入,并进行预测,然后给出相应的结果。

对于不同的应用,需要识别的对象不同,有些是语音有些是图像有些是传感器数据,但是它们在计算机中都有对应的数字表示形式,通常我们会把它们转化成一个特征向量,然后将其输入到神经网络中。

3、神经网络是如何进行预测的

那么神经网络是如何根据这些数据进行预测的呢?我们将一张图片输入到神经网络中,神经网络是如何预测这张图中是否有猫的呢??

这个预测的过程其实只是基于一个简单的公式:z = dot(w,x) + b。看到这个公式,完全不懂~~不少同学可能被吓得小鸡鸡都萎缩了一截。不用怕,看完我下面的解说后,你就会觉得其实它的原理很简单。就像玻璃栈道一样,只是看起来可怕而已。
在这里插入图片描述
上面公式中的x代表着输入特征向量,假设只有3个特征,那么x就可以用(x1,x2,x3)来表示。如下图所示。w表示权重,它对应于每个输入特征,代表了每个特征的重要程度。b表示阈值[yù zhí],用来影响预测结果。z就是预测结果。公式中的dot()函数表示将w和x进行向量相乘。(不用怕,在后面的文章《向量化》中我会用很通俗易懂的语言来给大家介绍向量相乘有关的高等数学知识)。我们现在只需要知道上面的公式展开后就变成了z = (x1 * w1 + x2 * w2 + x3 * w3) + b。
在这里插入图片描述
那么神经网络到底是如何利用这个公式来进行预测的呢?下面我通过一个实例来帮助大家理解。

假设周末即将到来,你听说在你的城市将会有一个音乐节。我们要预测你是否会决定去参加。音乐节离地铁挺远,而且你女朋友想让你陪她宅在家里搞事情,但是天气预报说音乐节那天天气特别好。也就是说有3个因素会影响你的决定,这3个因素就可以看作是3个输入特征。那你到底会不会去呢?你的个人喜好——你对上面3个因素的重视程度——会影响你的决定。这3个重视程度就是3个权重。

如果你觉得地铁远近无所谓,并且已经精力衰竭不太想搞事情了,而且你很喜欢蓝天白云,那么我们将预测你会去音乐节。这个预测过程可以用我们的公式来表示。我们假设结果z大于0的话就表示会去,小于0表示不去。又设阈值b是-5。又设3个特征(x1,x2,x3)为(0,0,1),最后一个是1,它代表了好天气。又设三个权重(w1,w2,w3)是(2,2,7),最后一个是7表示你很喜欢好天气。那么就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 2 + 1 * 7) + (-5) = 2。预测结果z是2,2大于0,所以预测你会去音乐节。

如果你最近欲火焚身,并且对其它两个因素并不在意,那么我们预测你将不会去音乐节。这同样可以用我们的公式来表示。设三个权重(w1,w2,w3)是(2,7,2),w2是7表示你有顶穿钢板的欲火。那么就有z = (x1 * w1 + x2 * w2 + x3 * w3) + b = (0 * 2 + 0 * 7 + 1 * 2) + (-5) = -3。预测结果z是-3,-3小于0,所以预测你不会去,会呆在家里搞事情。
在这里插入图片描述
预测图片里有没有猫也是通过上面的公式。经过训练的神经网络会得到一组与猫相关的权重。当我们把一张图片输入到神经网络中,图片数据会与这组权重以及阈值进行运算,结果大于0就是有猫,小于0就是没有猫。

你平时上网时有没有发现网页上的广告都与你之前浏览过的东西是有关联的?那是因为很多网站都会记录下你平时的浏览喜好,然后把它们作为权重套入到上面的公式来预测你会购买什么。如果你发现你朋友电脑手机上的网页里面老是出现一些情趣用品或SM道具的广告,那你朋友肯定是个性情中人。

上面那个用于预测的公式我们业界称之为逻辑回归,这个名字有点奇怪,大家记住就行了,只是个名字而已。

最后再稍微提一下激活函数。在实际的神经网络中,我们不能直接用逻辑回归。必须要在逻辑回归外面再套上一个函数。这个函数我们就称它为激活函数。激活函数非常非常重要,如果没有它,那么神经网络的智商永远高不起来。而且激活函数又分好多种。后面我会花好几篇文章来给大家介绍激活函数。在本篇文章的末尾,我只给大家简单介绍一种叫做sigmoid的激活函数。它的公式和图像如下。
在这里插入图片描述

在这里插入图片描述
我们在这里先只介绍它的一个用途——把z映射到[0,1]之间。上图中的横坐标是z,纵坐标我们用y’来表示,y’就代表了我们最终的预测结果。从图像可以看出,z越大那么y’就越靠近1,z越小那么y’就越靠近0。那为什么要把预测结果映射到[0,1]之间呢?因为这样不仅便于神经网络进行计算,也便于我们人类进行理解。例如在预测是否有猫的例子中,如果y’是0.8,就说明有80%的概率是有猫的。

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

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

相关文章

leetcode设计循环队列(链表方式来实现)

上次我们那个设计循环队列的时候用的是数组,因为那个时候还是不太会链表,现在有了链表的思路,我们一起来看看解题步骤吧。 https://leetcode.cn/problems/design-circular-queue/description/ 设计循环队列 那我们其实最主要的就是我们这个…

SpringBoot——配置及原理

优质博文:IT-BLOG-CN 一、Spring Boot全局配置文件 application.properties与application.yml配置文件的作用:可以覆盖SpringBoot配置的默认值。 ◀ YML(is not a Markup Language:不仅仅是一个标记语言)&#xff1…

centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法

centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法 一.centos 7.9 操作系统安装 参考:https://blog.csdn.net/qq_46015509/article/details/134572030?utm_sourceminiapp_weixin 安装完成后用后台连接工具连上虚拟机 二.安装python3 …

蓝桥杯第2119题 特殊时间 C++ 思维暴力

题目 思路和解题方法 1110 代表 1110年11月10号11点10分1110 4*4*4 有0111 1011 1101 1110 可以符合年 月日 时分秒的都有4种例如 1113有1113 1131 1311 3111 年份符合月日只有11 13 时分秒 只有11 13 11 31 13 11 无31 11 c 代码 #include <bits/stdc.h> using…

Linux进程管理,用户管理,文件压缩命令

gcc与g区别(补充了解): 比如有两个文件:main.c,mainc.cpp(分别用C语言和C语言写的)如果要用gcc编译呢? gcc -o mainc main.c gcc -o mainc mainc.cpp -lstdc 指明用c的标准库; 区别一: gcc默认只链接C库,并不会链接C的库;g会默认链接c标准库. 区别二: gcc编译.c文件,则按照C语…

【开源组件】- 关于Jetcache的使用

关于Jetcache的使用 &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f31d;分享学习心得&#xff0c;欢迎指正&#xff0c;大家一起学习成长&#xff01; JetCache是由…

K8s 中 Pod OOMKilled 原因

目录 Exit Code 137 解决方案 JVM 感知 cgroup 限制 使用 JDK9 的容器感知机制尝试 问题分析 容器内部感知 CGroup 资源限制 在 Java10 中&#xff0c;改进了容器集成 JVM 参数 MaxDirectMemorySize -XX:MaxDirectMemorySize 的默认值是什么&#xff1f; 其他获取 ma…

电源控制系统架构(PCSA)之电源管理基础设施组件

目录 6.5 电源管理基础设施组件 6.5.1 电源策略单元 6.5.2 时钟控制器 6.5.3 低功耗Distributor 6.5.4 低功耗Combiner 6.5.5 P-Channel到Q-Channel转换器 6.5 电源管理基础设施组件 6.5.1 电源策略单元 本节介绍电源策略单元(Power Policy Unit, PPU)。PPU的完整细节见…

Java核心知识点整理大全14-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

CSS特效019:图标图片悬浮旋转一周

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

【数据结构实验】查找(二)基于线性探测法的散列表

文章目录 1. 引言2. 实验原理2.1 散列表2.2 线性探测法 3. 实验内容3.1 实验题目&#xff08;一&#xff09;输入要求&#xff08;二&#xff09;输出要求 3.2 算法实现三、实验设计3.3 代码整合 4. 实验结果 1. 引言 本实验将通过C语言实现基于线性探测法的散列表 2. 实验原理…

R语言期末复习一

创建一个长度为7的字符向量&#xff0c;元素为"A", "B", "C", "D", "E", "F", "G"&#xff0c;并命名为vec1。 创建一个因子&#xff0c;包含6个水果&#xff1a;"apple", "banana"…

Kubernetes 秘密暴露使大型区块链公司面临风险

领先的网络安全专家对公开的 Kubernetes 配置表示担忧&#xff0c;这可能会威胁许多组织供应链的安全。 受影响的公司包括两家主要的区块链公司&#xff08;出于安全原因&#xff0c;其名称已被隐去&#xff09;以及其他多家财富 500 强公司。 Aqua Security 研究人员报告称&…

NX二次开发UF_CURVE_ask_joined_parms 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_joined_parms Defined in: uf_curve.h int UF_CURVE_ask_joined_parms(tag_t joined_curve_feature, UF_STRING_p_t uf_curve_string, int * creation_method, double …

物联网后端个人第十二周总结

学习工作进度 物联网方面 1.模拟设备通过规则引擎将数据通过mqtt进行转发 在物联网平台上实现模拟设备通过规则引擎将数据通过mqtt进行转发已经全部完成了&#xff0c;所使用的物联网平台在这方面有不少的问题和bug&#xff0c;也可能是没有按照开发者的想法对平台进行使用才导…

MATLAB在信号系统中的应用

1.产生一个幅度为1, 基频为2Hz&#xff0c;占空比为50%的周期方波.要求画出图形。 在MATLAB中&#xff0c;函数square(w0*t, DUTY)产生基本频率为w0 (周期T2*pi/w0)、占空比DUTY (τ/T)*100的周期矩形波&#xff08;方波&#xff09;&#xff0c;默认情况下占空比DUTY50。占空…

如何理解2023vivo开发者大会,使用Rust语言编写蓝河操作系统(BlueOS)?

在2023年vivo开发者大会上&#xff0c;vivo宣布使用Rust语言编写其蓝河操作系统&#xff08;BlueOS&#xff09;。 什么是Rust语言&#xff1f; Rust 是一种开放源代码系统编程语言&#xff0c;可用于开发高效、安全的软件。 使用 Rust 可管理内存并控制其低级详细信息。 但你…

LLM之Agent(一):使用GPT-4开启AutoGPT Agent自动化任务完整指南

在ChatGPT引领的大模型时代&#xff0c;要想让大模型按照用户的指令执行&#xff0c;Prompt设计是一门艺术&#xff0c;由此还催生了一个职业”Prompt工程师“。其实&#xff0c;并不是所有人都可以设计出好的Prompt&#xff0c;甚至同样的Prompt应用在不同的大模型上表现的结果…

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训

大数据技术之数据安全与网络安全——CMS靶场(文章管理系统)实训 在当今数字化时代&#xff0c;大数据技术的迅猛发展带来了前所未有的数据增长&#xff0c;同时也催生了对数据安全和网络安全的更为迫切的需求。本篇博客将聚焦于大数据技术背景下的数据安全与网络安全&#xff…

扫描条形码到电脑:Barcode to pc 4.6.3 Crack

像专业人士一样使用条形码将条形码发送到 PC 排名第一的智能手机扫描应用程序 将条形码即时发送到计算机程序并自动执行任务的最简单方法 受到全球 500,000 多名用户的信赖 条形码到 PC&#xff1a;Wi-Fi 扫描仪应用程序&#xff0c;条码到 PC&#xff1a;适用于 Android 和 i…