从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

相关推荐
码爸5 小时前
支持向量机介绍与示例
算法·机器学习·支持向量机
滕州市燕猫虎计算机科技工作室个体工商户5 小时前
《Rust程序设计》学习笔记八:结构体
笔记·学习·rust·rust程序设计
别动我齐刘海6 小时前
Linux 系统调试学习1
linux·运维·服务器·c++·学习·机器学习·机器人
xier_ran8 小时前
【infra之路】AI 编译器学习笔记(二):重拾 C++——移动语义与 LLVM 风格的类型转换
人工智能·笔记·学习
szxinmai主板定制专家8 小时前
储能EMS + 协调控制器实战:RK3568/3576/3588+FPGA+AI 故障录波与诊断
人工智能·深度学习·机器学习·fpga开发·rk3588·rk3576·协调控制器
努力努力再努力wz9 小时前
【机器学习入门系列】从随机事件到正态分布:一文梳理概率论的核心知识
人工智能·机器学习·概率论
li星野10 小时前
5 TYPES OF ADVERBS — One-Page Notes
学习
星恒随风10 小时前
Linux库的底层原理:ELF文件格式、静态链接、程序加载、虚拟地址空间与GOT/PLT详解
linux·运维·笔记·学习·状态模式
罗西的思考10 小时前
[Agent Memory / 强化学习] MemPO源码学习笔记 — (7)— 混合机制
笔记·学习
高洁0111 小时前
AI赋能产业升级与中美未来经济赛道博弈
人工智能·python·深度学习·机器学习·transformer