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

前言

本文的例子和素材均来自 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"由很多个圆弧组成

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

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

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

相关推荐
邓某人的父亲1 小时前
【EcoNAS: Finding Proxies for Economical Neural Architecture Search】读后感
神经网络·神经网络结构搜索
lan人啊1 小时前
脉冲神经网络(SNN)论文阅读(六)-----ECCV-2024 脉冲驱动的SNN目标检测框架:SpikeYOLO
论文阅读·神经网络·目标检测
AI完全体10 小时前
【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)
人工智能·深度学习·神经网络·机器学习·过拟合·模型复杂度·偏差-方差
sp_fyf_202410 小时前
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-02
人工智能·神经网络·算法·计算机视觉·语言模型·自然语言处理·数据挖掘
代码骑士14 小时前
【一起学NLP】Chapter3-使用神经网络解决问题
python·神经网络·自然语言处理
管二狗赶快去工作!17 小时前
体系结构论文(五十四):Reliability-Aware Runahead 【22‘ HPCA】
人工智能·神经网络·dnn·体系结构·实时系统
达柳斯·绍达华·宁21 小时前
CNN中的平移不变性和平移等变性
人工智能·神经网络·cnn
技术无疆1 天前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
浊酒南街1 天前
吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.7-2.8
人工智能·深度学习·神经网络
xiandong201 天前
240929-CGAN条件生成对抗网络
图像处理·人工智能·深度学习·神经网络·生成对抗网络·计算机视觉