| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 《深度学习入门-基于Python的理论与实现》读书笔记 -> 正文阅读 |
|
[人工智能]《深度学习入门-基于Python的理论与实现》读书笔记 |
写在前面: 1、该读书笔记将侧重总结深度学习理论而非Python实现。 2、本书环境基于Python3.x+Numpy+Matplotlib。 第一章 Python入门第二章 感知机第三章 神经网络? ? ? ? 最简单的神经网络有一个输入层一个输出层和一个中间层(隐藏层)组成,复杂的神经网络可以包含多层中间层。 ????????神经网络与感知机(人类大脑的神经元)类似,神经元接受输入信息,判断是否激活该神经元,然后根据某种处理方式得到结果输出。拆解神经网络的一个节点可以发现,它是由输入x1、x2,偏置1,权重b、w1、w2,激活函数h()和输出y组成的。 ????????具体公式可以如下表示,其中偏置表示该神经元被激活的难易度,激活函数h()则表示该神经元的处理方式。 ? ? ? ? ? ?最简单的激活函数是阶跃函数。 ? ? ? ? 常用的激活函数包括sigmoid函数和ReLu函数? ? ? ? ? 神经网络的运算主要为大量的矩阵运算,注意各数据的维度要保持一致,输出的维度又权重的列数决定。 ? ? ? ? ?输出层的激活函数与前几层稍有不同,通常神经网络可以用在分类问题(数据属于哪一个类别)和回归问题(根据某个输入预测一个(连续的)数值)上,一般来说,分类问题用softmax函数,回归问题用恒等函数。 ? ? ? ? 恒等函数将输入按原样输出,不做任何改动;softmax函数可以用以下式子表示,使用softmax函数可以用概率的方法处理问题。 ? ? ? ? ?使用神经网络解决问题时,需要先使用训练数据进行权重参数的学习;进行推理时,使用刚才学习到的参数,对输入数据进行分类。 ?第四章 神经网络的学习? ? ? ? ?首先需要提取特征量,这里比较以下传统方法、机器学习和神经网络的区别。 ? ? ? ? ?机器学习中,一般将数据分为训练数据和测试数据,训练数据用来寻找最优参数,然后使用测试数据评价模型的泛化能力,泛化能力是指处理未被观察过的数据的能力,获得泛化能力是机器学习的最终目标。 ? ? ? ? 寻找最优参数即寻找使损失函数的值最小的参数,因此需要先定义损失函数,最常用的是均方根误差,其中y表示神经网络的输出,t表示监督数据,k表示数据维数。 ? ? ? ? ?其他还有交叉熵误差等。 ? ? ? ? ?注意不能使用识别精度为指标,因为需要输出值是连续的,否则参数的导数在绝大多数地方都会变成0,因此阶跃函数不能作为激活函数,否则输出都会变成不连续的,而sigmoid函数的导数在任何地方都不为0,这对神经网络的学习非常重要。 ? ? ? ? 注:batch是批处理的意思,batch_size=100表示将100张图同一批次处理。 ?第五章 误差反向传播法? ? ? ? 有数据式和计算图两种方法,计算图将计算过程用图形表示出来,比较直观,本章以计算图为例。 ? ? ? ? 苹果价格100日元,个数2个,消费税10%,最后实付220日元。 ? ? ? ? ?加上另一种水果后如下。 ? ? ? ? ? ?用计算图解决问题的步骤是先构建计算图,然后从左到右计算。其中这个从左到右的计算过程是一种正方向的传播,简称正向传播,获得了正向传播结果后,可以通过导数计算实现反向传播。 ?? ?????????反向传播的计算顺序是,先将节点的输入信号乘以节点的局部导数(偏导数),然后再传递给下一个节点。比如反向传播时,“**2”节点的输入是z对z的偏导数,将其乘以局部导数即z对t的偏导数(因为正向传播是,输入是t、输出是z,所以这个节点的偏导数是z对t的偏导数),然后传播给下一个节点。注意反向传播第一个节点的输入是1;从图上的公式可以看出反向传播符合链式法则,即一个节点的输入累乘上这个节点的偏导数就等于这个节点的输出。 第六章 与学习相关的技巧????????Dropout是一种在学习过程中随机删除神经元的方法。训练时,随机选出隐藏层的神经元,然后将其删除。被删除的神经元不再进行信号的传递。训练时,每传递一次数据,就会随机选择要删除的神经元。然后,测试时,虽然会传递所有的神经元信号,但是对于各个神经元的输出,要乘上训练时的删除比例后再输出。 ????????通过使用Dropout,训练数据和测试数据的识别精度的差距变小了,并且训练数据也没有达到100%的识别精度。像这样,通过使用Dropout,即使是表现力强的网络,也可以抑制过拟合,即实际使用时效果较好。 ?第七章 卷积神经网络????????Convolutional Neural Network,CNN,常用于图像识别和语音识别。 主要包含输入层、卷积层、激活函数(输出层常使用Softmax,其他层常使用ReLu)、池化层、全连接层(通常使用Affine)和输出层。 卷积层? ? ? ? ?如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变成1,导致无法再应用卷积运算,为了避免出现这种情况,所以要使用填充。 ? ? ? ? 并且卷积运算的步幅可以大于1,增大步幅,输出尺寸会变小,而填充后,输出尺寸会变大。通过以下公式可以计算输出尺寸大小。 ? ? ? ? 设输入尺寸为(H,W),滤波器尺寸为(FH,FW),输出尺寸为(OH,OW),填充为P,步幅为S。此时输出尺寸为 ? ? ? ? ?必须使分式可以除尽。 ?通道方向上有多个特征图?????????会按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出。 通道方向上有多个滤波器? ? ? ? 这样输出也可以有多个输出。 ? ? ? ? ?同时可以应用批处理,一次有多个输入。 ????????各部分维度如下图。 池化层? ? ? ? 用于缩小高、长方向上的空间运算。池化有多种方式,max池化是获取最大值的池化方式,另外还有average池化等。 ? ? ? ? ?池化不会改变输入数据和输出数据的通道数。 ? ? ? ? ?池化对输入数据的微小偏差有鲁棒性。 第八章 深度学习 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/22 9:59:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |