从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数

在上一篇文章中,我们浅显地了解了神经网络的架构以及没想神经元的激活项是怎么计算的,下面我们通过一个详细的例子来说明神经网络是怎么计算复杂的非线性函数的输入的。

例子与直觉理解(Examples and intuitions )

假设我们有两个二进制(即只能是0或1)的输入特征,为了简化问题,在坐标系上只标记了两个正样本和两个负样本,如下:

二进制特征量的四个样本

其中,表示当这两个值其中之一恰好等于1时为真,即图中两个圆圈代表,两个叉叉代表。在建立一个神经网络来拟合XOR运算之前,我们先从能够拟合AND(这里的OR和AND和字面意思相同,表达的是逻辑里的或还有且的意思)运算的神经网络来入手。

拟合AND运算的网络计算过程

如图,这个网络在计算时额外添加了一个偏置单元,也就是我们所说的,假设我们直接给输入层的每个输入的系数赋值:-30,20,20。通过穷举的方式,结合sigmoid函数的图像我们可以列出两个输入量的真值表。不难发现,除了两个都取1的时候为真以外,其余三种情况都为假(一般来说,输出为1即是真,而给那个输入变量放负权重取决于表达式里输入特征前是否有NOT。假如表达式里是,则的系数为-20)。这四个值都是神经网络所构建的逻辑函数可能的取值,而这些输出也符合逻辑回归的输出。

总的来说,如果要实现逻辑非运算,我们需要做的就是在预期得到非结果的变量,也就是神经网络输出之前,放一个很大负权重,也就是上面所说的系数,从而改变其取值,再结合sogmoid函数来实现输出0或1。让我们把之前的运算都结合起来,如下:

神经网络解决复杂非线性逻辑问题的过程

如图,我们把放在中间的隐藏层里,为了得到我们想要的结果,在最终输出前通过对不同特征量加负权重改变输出,这就是神经网络针对复杂问题时,通过增加隐藏层来改变输入,从而简化问题来改变结果。简单来说就是,神经网络为了处理复杂问题,会将其分解为一个个问题(这有点像是分类讨论),直到最后得出一个可以成功预测的结果。这可能表现为你在输入一组特征量时,会看到神经网络在后面用了很多个你难以理解的隐藏层来分析问题,像是识别邮件的字体来自于谁写的,也许我们会想到不同字母的弯曲程度和墨水的深浅,但网络可能还会添加类似字母跳动、由近及远变化的隐藏层。

学习内容来自于b站吴恩达大佬课程:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.player.switch&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=1

相关推荐
月疯29 分钟前
生成对抗网络的变体版本
深度学习·机器学习·生成对抗网络
sel_932 分钟前
【多轮对话论文导读(三)】多轮对话与Agent论文阅读笔记:用户模拟、轨迹生成与长期记忆
论文阅读·人工智能·笔记·深度学习·算法·机器学习
我命由我123451 小时前
UI 设计 7 种排列方式
xml·学习·ui·html·产品运营·产品经理·学习方法
常驻客栈2 小时前
B-深入理解计算机系统第3版之第8章:异常控制流
笔记·学习·常驻客栈·深入理解计算机系统·学习笔记‘’
lzhdim2 小时前
13、JavaScript事件循环机制 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
小杨不想秃头2 小时前
信息安全工程师考试
学习·网络安全
喜欢吃豆2 小时前
otes on LLMs 更新:一份更系统的大模型工程学习手册
学习·大模型·agent
AOwhisky2 小时前
Linux 网络服务架设学习笔记(第五期)——Web 服务(上篇):Apache HTTP Server——从静态到动态
linux·运维·服务器·笔记·学习·云计算·apache
船厂电气自动化ai大模型3 小时前
AI大模型与数学·第57课 傅里叶全套工具链综合实战:串联级数/连续变换/DFT/FFT,图像、音频、扩散模型完整例题
数据结构·人工智能·深度学习·算法·机器学习
绘梨衣5473 小时前
异步任务队列-学习2
爬虫·python·学习·任务队列