IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 为什么神经网络层数越多越好?训练次数与层数的区别与联系 -> 正文阅读

[人工智能]为什么神经网络层数越多越好?训练次数与层数的区别与联系

为什么神经网络层数越多越好?

参考资料:https://www.zhihu.com/question/65403482、https://blog.csdn.net/weixin_44023658/article/details/106177580、https://www.bilibili.com/video/BV1bx411M7Zx

一句话回答

神经网络层数越多,对输入特征抽象的层次越深,对其理解的准确度相对来说也就越深。

神经网络关于层数的原理

人工智能的编程相比于传统编程的一个重要特点就在于,我们难以知道其内部到底是如何一步步执行,最后实现结果的?

image-20210724162321061

神经网络的本质就是模仿人类大脑中的神经元组成的网络,若干神经元的激发促使另一些神经元激发。

在神经网络中,后一层神经元的输入是前一层输出的加权和,前一层的特征在后一层就被抽象出来了,学习的过程其实就是调节和优化各连接权重和阈值,并不断抽象的过程。

例如对应一个猫的识别,第一层抽象出了猫的基本特征——两只眼睛一个鼻子一个嘴巴两个耳朵,第二层抽象出了猫的耳朵应该是尖尖的,眼睛是圆圆的…而第三层我们又抽象除了更加细致的特征,以此类推…最后根据相应的算法公式,我们推出根据这些抽象,最终在输出层给出这个图片中是猫的概率是多少多少,从而得出一个结论。

浅层神经网络的特征抽象程度不高,而层次越深特征的抽象程度越高。也就是在某些特定任务上所谓的“效果越好”,这也是为什么深度神经网络可以做出很多只有人类才能做到的需要高度抽象理解能力的事情。

数字识别的例子

以一个最基础的人工智能算法来举例:手写数字识别:

image-20210724162401171

我们将一个手写数字的图片拆分成一个28*28的图片,其中每一个像素点代表该点的灰度值(0~1,越小越黑,越大越白)

image-20210724162919659

而输入到输出的过程简单描述如下视频:

http://suprit-images.oss-cn-beijing.aliyuncs.com/2021-07-24-Filmage%202021-07-24_163510_MediumQuality.mp4

先来看隐含层第二层,可能各个神经元能分别对应上一个笔画部件,这就是我们前面提到的抽象。而层与层之间是有着连接的,上一层的神经元通过给定的算法公式在一定情况下才能输出到下一层,而通过诸如前向传播反向传播梯度下降损失函数这些东西就可以实现神经网络的学习过程。

img

img

再来看隐含层第一层,识别圆圈的任务同理可以抽象成更细微的问题,也只有层数多了,才能够实现这样的抽象。

数字9的可能的特征抽象如下:

image-20210724174312775

这样的原理同样可以应用到我们刚刚提到的猫的识别上,可能的特征抽象如下:

image-20210724174425786

??个人的一种理解

大一的C语言课上老师就告诉我,编程的逻辑无外乎只有三种:顺序、判断、循环那么人工智能编程是一种例外吗?貌似图像识别并没有用到这三种逻辑来实现识别目标呀?

其实,从原理上来讲,这是可以实现的。以刚刚的数字识别为例,我们输入的图像为28*28个像素,每层有16个节点,分为3层,层与层的连接之间还要考虑权重和偏置,大约有784*16+16*16+16*10=13002个神经元,可以理解为有13002个情况要考虑,每一个地方的不同,都可以导致不同的结果。

我个人认为,如果你真的足够强大,使用我们大一学到的C语言,写上那么** 2 13002 2^{13002} 213002??个if**,依然是可以实现图像识别这个人工智能程序的。哈哈。

从这个角度上来讲,我们在讨论机器是如何学习,其实就是想办法看看这么让电脑来妥善的处理这么一大坨参数,而使用数学公式、向量化这些东西,其实就是一个工具和桥梁,来让程序能够更好的解决问题,同时使得程序更容易编写。这就是是数学和Python的魅力所在:

image-20210724181710795

增加学习次数与层数的关系和区别

有人问到,单单增加浅层神经网络的学习次数,可以提高准确率吗?

其实是可以的,但是到达一个局限值之后就再也无法提高了,甚至还会降低。而这个局限制往往会比深层神经网络要低的多。因为层数提高的是对任务的抽象程度,而学习次数仅仅是通过当前的学习方法增加熟练度。

层数真的越多越好吗?

不是说仅仅层数越多效果越好,这个还取决于你的激活函数,还有各种超参数的设置等等,关于超参数的设置属于是一个专门的领域问题。神经网络说白了就是个多层复合函数,层数越多一般会更“逼近现实”,但是也容易导致过拟合问题。

在这里插入图片描述

过拟合

当你的模型开始记录训练数据而不是从中学习的时候,就发生了过拟合。就好比我们在复习考试的时候一字不差背下了书中的所有内容,但知识稍微一变通,我们又不会了。

关于过拟合,依然举数字识别的例子,由于我们的层数过多,对训练数据的抽象过分到了几乎每几个像素都要抽象一下,这样就可能导致除了训练集里的图片可以百分百识别(毕竟几乎每个像素都学习好了),我们再也无法识别其他的图片。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 11:39:27  更:2021-07-25 11:44:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 23:42:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码