【一文读懂】什么是神经网络?(一)

前言

本文的例子和素材均来自 www.3blue1brown.com/lessons/neu...,这篇博客通过"识别数字"的例子,介绍了什么是神经网络、神经网络的组成、数据如何在网络中传播等基础知识。

什么是神经网络

上面这张图片,就是一个简单的神经网络,他的功能是识别一个手写的数字图像,最后输出手写数字的结果。

www.3blue1brown.com/lessons/neu...这篇文章的开头,提供了一个交互式的体验程序。可以让你直观的感受神经网络的执行过程。

如果让你通过传统的If-else,For-loop方式写一段代码来实现这个功能,想必是非常困难的。因为人为手写的数字是不确定的,每个人的写法可能不同,所以你很难用一个标准去评估何为一个数字。 但是当我们的眼睛看到上面三张图的时候,我们的脑海里立马就能知道它们都代表着数字"3",这是为什么呢?基于这样的思考,人们研究了一种模仿人类大脑工作模式的技术,它就是神经网络

在这个例子中,我们无法定义一套标准去告诉神经网络应该如何识别数字,我们只是把一系列的图片和图片对应正确的数字输入神经网络,由神经网络自主调整和学习。

神经网络的结构

神经网络的种类有很多种,例如卷积神经网络(CNN)、递归神经网络(RNN)等等,而他们的区别就是网络内部的结构,不同的网络有不同的侧重点和能力。在本例中,我们从最简单的全连接网络入手。

神经元

神经网络有很多层,而每一层都是由若干神经元组成。你可以理解神经元是一个包含数字的容器,这个数字称为"激活值 "(activation)。在这里你可以想象,数字越大,这个神经元越亮,越亮的神经元越活跃。 所有的信息都被存储在神经元中,在这个例子中,我们的图片如何输入到神经元当中呢。

对于一张图片,它的信息也就是每个像素点对应的RGB值(严格一点还有每个像素点所处的坐标,本文不讨论),所以我们要把这些RGB值都传入神经网络。由于我们的例子中是黑白图片,所以只需要把灰度值传入即可。

在例子中,把灰度值通过算法压缩到了0-1之间,在后续的章节会解释,暂可不必纠结。

本例中的图片大小为28 * 28,所以为了把这784个像素都传入网络中,神经网络的第一层必须包含784个神经元,才足够存储这张图片的信息。

在将图片输入到神经网络的时候,你可以选择把图片的像素值从左到右依次填入神经元的激活值,或者是选择从上到下,都可以。当然这也有可能会影响你的训练效果

在本例中,神经网络的最后一层由十个神经元组成,当图片从输入一路运行到最后一层时,此时10个神经元的激活值,就代表了图片对应那个数字的可能性。 就如上面让你想象的,激活值越大越亮,说明输入图片是对应数字的值的概率越大。打个比方:上面的这张图,在运行以后发现"4"和"9"这两个神经元的亮度差不多,说明网络在此时产生了疑惑,在4和9之间无法分辨。

(你仍然可以选择一个激活值最大的进行输出,但是答案很可能是错的)

对于中间的两层,它代表什么意思呢?人工智能有一个很大的特点,就是它具有不可解释性,也正是这一点,你不必去深究为什么中间是16个神经元,为什么中间要放两层。我们可以把中间的结果视为"隐藏层"

中间2层16神经元的结构,并不是固定的,它是任意的选择。无法解释它代表了什么特征

为什么要使用层次结构

我们再来看这张图,在网络中,每一层的神经元是和下一层的神经元相连的。这也就表明了,每一层的神经元它的激活值,是对下一层的神经元有影响的。

其次我们可以发现第二层的神经元在运算时,有亮有暗,而第二层的每一个神经元都是由第一层所有的神经元相连接的。

这也是全连接网络的定义

说明第一层的神经元对第二层的神经元影响是各不相同的。

在讨论神经网络为什么要分层之前,我们先思考一种识别数字的方法: 对于数字9来说,它可能是由一个"o"加一个"|"组成,所以当我们识别到图片中有这两个特征时,这张图片是9的概率就非常大。

所以我们可以把识别数字分而治之变成识别"o"、"|"这样的特征符号。 我们假设神经网络倒数第二层就是在识别"o"和"|"这样的特征形状,当"o"和"|"对应的神经元激活时,它的激活值传入最后一层,最终激活数字"9"对应的神经元。

同样的,我们再细分一下,"o"由很多个圆弧组成

这时我们又假设倒数第三层是识别这些特殊符号的,此时我们关注的特征就非常小了。

以上都只是假设,第二层和第三层具体关注了什么内容,是比较复杂的

最后我们回到为什么要分层的问题上,分层能够让神经网络将复杂的问题简单化,将大问题拆解成小问题。(虽然你并不知道它究竟拆解成什么问题)

相关推荐
Chef_Chen2 小时前
从0开始机器学习--Day17--神经网络反向传播作业
python·神经网络·机器学习
羊小猪~~3 小时前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
985小水博一枚呀8 小时前
【深度学习滑坡制图|论文解读3】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
人工智能·深度学习·神经网络·cnn·transformer
985小水博一枚呀9 小时前
【深度学习滑坡制图|论文解读2】基于融合CNN-Transformer网络和深度迁移学习的遥感影像滑坡制图方法
人工智能·深度学习·神经网络·cnn·transformer·迁移学习
数据与后端架构提升之路9 小时前
从神经元到神经网络:深度学习的进化之旅
人工智能·神经网络·学习
孙同学要努力17 小时前
全连接神经网络案例——手写数字识别
人工智能·深度学习·神经网络
小言从不摸鱼1 天前
【NLP自然语言处理】深入解析Encoder与Decoder模块:结构、作用与深度学习应用
人工智能·深度学习·神经网络·机器学习·自然语言处理·transformer·1024程序员节
羊小猪~~1 天前
神经网络基础--什么是神经网络?? 常用激活函数是什么???
人工智能·vscode·深度学习·神经网络·机器学习
_清豆°1 天前
机器学习(四)——神经网络(神经元、感知机、BP神经网络、梯度下降、多层神经网络、Python源码)
python·神经网络·机器学习·感知机·梯度下降·神经元·多层神经网络
lzt23231 天前
深度学习中的 Dropout:原理、公式与实现解析
人工智能·python·深度学习·神经网络·transformer