从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

相关推荐
代码不行的搬运工13 分钟前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
VertexGeek15 分钟前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
罗小罗同学21 分钟前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤24 分钟前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
羊小猪~~28 分钟前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
二进制_博客1 小时前
Flink学习连载文章4-flink中的各种转换操作
大数据·学习·flink
codebolt1 小时前
ADS学习记录
学习
Komorebi.py2 小时前
【Linux】-学习笔记05
linux·笔记·学习
不去幼儿园2 小时前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
无脑敲代码,bug漫天飞3 小时前
COR 损失函数
人工智能·机器学习