| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【neural networks and deep learning学习笔记】chapter1 神经网络构成 -> 正文阅读 |
|
[人工智能]【neural networks and deep learning学习笔记】chapter1 神经网络构成 |
前言研零至研一路上,经过老师的推荐学习了Michael Nielsen的《Neural Networks and Deep Learning》这本书,通过学习受益良多,共学习了1、2、3、6章节的内容,从感知机S型神经元开始,一步步组成一个在分类手写数字方面有较好效果的网络,与书中携带的实验一起,把对整个简单网络的形成过程与对知识的讲解都很透彻。 汇报完毕后打算把整个过程记录一下,主要是学习到的概念,还有遇到的问题和在代码调试过程中遇到的问题。 第一部分主要学习到的是神经网络的基本架构和组成元素,以及为了让网络进行学习的一个梯度下降方法
组成元素-感知机学习神经网络的组成元素,首先第一个学到的就是感知机,他是感知机在 20 世纪五、 六?年代由科学家Frank Rosenblatt发明的一种人工神经元。 ?上图所示的感知机有三个输入x123,一个输出output,三个权重w123和一个偏置b,那么这个感知机的作用是什么呢,请看下面。 ? ?整个感知机的工作方式就像上式表达的那样,是一个分段函数,在输入x后由权重w和偏置b决定output。 而且我们可以看出的一点是这个人工神经元的输出只有0和1两种,这也导致了它有一定的局限性,那么针对这个局限性,后续又学到了S型神经元。 组成元素-S型神经元S型神经元可以针对网络中的权重(或者偏置)做些微小的改动。就像我们看到的,这一属性会让学习变得可能。 ?其实在形状上,单个的S型神经元可以说和感知机是一摸一样的,但是它的作用方式有所变化: ?可以看到与感知机不同的是,他的输入及偏置和权重的计算结果并没有直接输入到分段函数,而是加入了一个sigmiod函数函数的激活函数,那么整个的神经元工作方式就是上图中的output,下面给出这个函数的图像: ?再根据上述近似公式,就可以计算到S激活函数的微小变化了。 另外,改变w,b的值,是可以改变曲线的形状的。如果想要得到和感知机一样的结果,也可以把sigmiod函数的结果输入一个阶跃函数作为最终的激活函数。 所谓激活函数(Activation Function):就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。例如上述的sigmoid函数,甚至上面感知机中的分段函数。 组成神经网络学完组成元素后就可以组成一个神经网络了。 ?而且通过上面的组成元素的工作方式,我们也知道了整个神经网络得到最终output的方法。 其中一个神经网络往往有输入层,隐藏层和输出层组成。其中输入输出都是一层,中间的隐藏层可以有多层,深度学习就是通过增加隐藏层的层数来完成对复杂问题的分析和学习。 上图中所有层之间神经元的链接方式都是全连接的。 梯度下降方法通过上述学习,我们已经知道了神经网络的具体构成和工作方式,那么对于神经网络,我们想让它完成的公式是什么呢?在这里我简单的做了下流程: 那么我们现在已经组成了神经网络,下一步自然就是“教”会这个网络学习的方法。 组成神经网络后,我们想让这个网络进行学习,并最终能够和实际问题拟合,我们希望有一个算法,能让我们找到权重和偏置(两个自由变元,通常说输入值不是自由的,因为它是对具体问题的描述)。以至于网络的期望输出能够拟合所有的输入。 为了量化实现这个目标,定义了一个二次代价函数C: 其中a是训练数据中的输出,y(x)是对给定输入x的期望输出。自然是代价函数C的值越小越好,这代表我们的期望输出与网络的输出相似程度。当样本值足够时,函数图像的最低点应当越来越接近0,代表网络的输出与实际问题答案非常接近了。 神经网络的学习过程即使通过调整权重w,b(自由变元)使得代价函数接近0,也就是让竖坐标C越来越低,就像一个小球一样。整个过程我进行了简单的推导。 最终目的就是找到一个w和b的选择,让二次代价函数C在选择这些方向时能不断地下降,也就达成了上图中小球下落的过程,也是网络正向学习的过程。 大家常说的随机梯度下降,其中“随机”体现在每次选择小批量数据进行训练,整个方法不断循环,随机并不是指下降的方向是随机的。 上面大概就是第一章的内容,学到了网络大概通过什么样的方式进行对答案的获取。告诉了我们当自由变元w,b?的变化值取对应二次代价函数的偏导值时候能够使网络进行正向学习,但并没有告诉怎样进行高效的对代价函数的偏导求值,那我想下一章的反向传播就介绍了这个问题。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/26 4:34:01- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |