全连接神经网络、卷积神经网络

  • 前言
  • 全连接神经网络
    • 介绍
    • 结构
    • 损失函数
    • 梯度下降
    • 链式法则
    • 反向传播
    • 总结
  • 卷积神经网络
    • 背景
    • 结构
    • 卷积(Convolution)
    • 池化(Max Pooling)
    • 激活机制
    • Example:风格迁移

前言

刚开始学习机器学习没多久,记录一下神经网络的知识。基于李宏毅老师的机器学习课程,图片和内容也是来自老师的课程笔记整理(科学上网,然后这里)。

全连接神经网络

介绍

 深度学习有三个步骤

选择一个合适的神经网络—>选择一个模型评估方法—>选择最优的函数

全连接神经网络,应该叫做全连接前馈神经网络(Fully Connect Feedforward Network),全连接(Fully Connect)指的是下一层每一个神经元都会与上一层的每一个神经元相连;而前馈(Feedforward)指的是输入信号进入网络后,信号流动是单向的,其间没有反馈。

结构


 
输入—>乘权重后加上偏差(线上的是权重,绿色格子内的是偏差)—>激活函数—>作为下一层输入
 
激活函数不止一种,Sigmoid函数值总是在0到1之间。

所以,可以把整个神经网络看成一个函数,权重和偏差就是函数参数,参数确定了,函数也就确定了。

而深度学习,意思是可以叠加很多层神经网络,形成深度。当然也不是都叠加全连接层了…

设多少层?每层几个神经元?对一个具体问题,需要尝试加直觉来调试,炼丹…

损失函数

用损失函数来判定模型好坏。
采用交叉熵(cross entropy)函数来对预测和目标,即 y y y和 y ^ \widehat{y} y ​的损失进行计算,接下来就是调整参数,让交叉熵越小越好。


对于损失,我们不单单要计算一笔数据的,而是要计算整体所有训练数据的损失,然后把所有的训练数据的损失都加起来,得到一个总体损失 L L L。接下来就是在Function Set里面找到一组函数能最小化这个总体损失L,或者是找一组神经网络的参数 θ \theta θ,来最小化总体损失 L L L

如何找到最优的函数和最好的一组参数,方法是梯度下降。



 
这是用来更新权重的方法。应该是和反向传播结合在一起。计算损失函数对权重的偏导,然后权重-(学习率乘偏导值)。

在神经网络中计算损失最好的方法就是反向传播,我们可以用很多框架来进行计算损失,比如说TensorFlow,theano,Pytorch等等

梯度下降

比较重要的部分。
 
都是减梯度,所以不存在梯度上升的说法,沿着梯度反方向更新即可。
 
如下图
 

  • 给出参数 θ \theta θ (weight and bias)
  • 选择初始的 θ 0 \theta^0 θ0,计算 θ 0 \theta^0 θ0的损失函数对参数的偏微分。
  • 用这个偏微分的值乘学习率 η \eta η,减去这一个值更新参数。

链式法则

链式法则差不多就是从后往前时,可以一层一层求前面权重对于最终损失函数的梯度。如下图
 

反向传播

  • 损失函数时定义在单个训练样本上的,比如在分类问题中,则表示预测的类别和实际类别的区别。
  • 总体损失函数(Total loss function)是定义在整个训练集上的,所有误差的总和。也是反向传播所需要最小化的值。


L ( θ ) L(\theta) L(θ)是输出层每一个神经元的损失 l ( θ ) l(\theta) l(θ)的和。计算总损失的偏微分,只需要计算每个神经元损失的偏微分。
 
取出一个neuron进行分析

计算梯度分成两个部分

  • ​计算 ∂ z ∂ w \frac{\partial z}{\partial w} ∂w∂z​
  • 计算 ∂ l ∂ z \frac{\partial l}{\partial z} ∂z∂l​

Forward Pass部分计算:

Backward Pass 部分计算
 


总结

计算Forward Pass 和 Backward Pass部分以后,两部分相乘可得到梯度,使用梯度下降来寻找损失最小的函数。

卷积神经网络

背景

CNN(Convolutional Neural Network)主要用在图像处理上。
至于为什么提出CNN,可以举例说明比如一张 100 ∗ 100 100*100 100∗100的彩色图,Flatten后是 100 ∗ 100 ∗ 3 = 30000 维 100*100*3=30000维 100∗100∗3=30000维,如果下一层有100个神经元,则有300万个参数,再传输到下一层…过于复杂。所以需要提出一个新的简化网络结构来处理这个问题。

在影像处理中有三个特点

  • 可以通过小区域的特点来识别图片。

  • 某一个特征在图片的不同位置出现。

  • 图片的尺寸变化不影响对图片的理解。

结构

首先输入一张image,经过多次卷积和池化以后,输入到全连接分类层。


 
基于影像处理的特点,设计网络结构。

卷积(Convolution)

6*6的Image是网络的输入,而Filter就是需要学习的参数。

每个Filter表示检测的某一个特征,这个Filter并不会一次查看整张图。

然后根据步长移动Filter,和图像的值做内积,得到结果。

多个Filter得到的矩阵叠在一起形成特征图。

如果是彩色图,Filter的深度和输入保持一致。

将filter的9个值和image的9个值做内积(不是把每一个channel分开来算,而是合在一起来算,一个filter就考虑了不同颜色所代表的channel),内积然后相加,得到一个值。

convolution就是fully connected layer把一些weight拿掉了。经过convolution的output其实就是一个hidden layer的neural的output。如果把这两个link在一起的话,convolution就是fully connected拿掉一些weight的结果。

滑动一次则表示一个新的神经元。

其实相当于每次只考虑输入的一部分,即识别某个pattern,以此形成多个神经元。

池化(Max Pooling)


在输出,选择某个范围,保留最大值


做完一个convolution和一次max pooling,就将原来6 * 6的image变成了一个2 *2的image。这个2 *2的pixel的深度depend你有几个filter(你有50个filter你就有50维),得到结果就是一个new image but smaller,一个filter就代表了一个channel。



flatten就是feature map拉直,拉直之后就可以丢到fully connected feedforward netwwork,然后就结束了。

用的时候,框架已经把以上内容都做好了,只需要确定每层的参数。
 
如下一些例子
 


激活机制


 
人为定义一个激活机制,比如,使Filter的输出的和最大,则称这个Filter被激活了。那么,每个Filter的任务就是,找到一张图片,使得它被激活了。
 
下面找一下池化以后,使得50个Filter激活的图片。取其中12个看看。
 

 
差不多是每个Filter在找一个pattern的意思。

再看全连接层


 
这里可以看到,似乎又不是上面的纹路一样了。因为这一层实际上综合了之前的多个Filter的信息,拼在了一起。越到后面所寻找的pattern越综合,这就是比较巧妙的地方。(直到最后,找出整张图大小的pattern,相当于完成了图像识别的任务)

但是有些时候,可能计算机识别的和人所识别的不太一样。

比如手写数字识别,如果最后结果是这样

这个和我们想的不一样。可以根据实际情况加入一个修正项,这里是把所有pixel的值加起来,要求笔画(设为1)的地方尽可能小。

至此介绍完了激活机制。

Example:风格迁移

恰好参加了一个项目里面有别人写风格迁移的功能。看了一下似乎也是这个意思:

相当于让原图和style一起输入以后,让CNN激活。两部分对激活都有贡献。

到此结束。

全连接神经网络、卷积神经网络相关推荐

  1. 【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )

    文章目录 I . 池化 II . 丢弃操作 III . 批量规范化 IV . 卷积神经网络 完整流程示例 ( 1 ) : 原始输入图 V . 卷积神经网络 完整流程示例 ( 2 ) : 卷积层 C1C ...

  2. Pytorch 实现全连接神经网络/卷积神经网络训练MNIST数据集,并将训练好的模型在制作自己的手写图片数据集上测试

    使用教程 代码下载地址:点我下载 模型在训练过程中会自动显示训练进度,如果您的pytorch是CPU版本的,代码会自动选择CPU训练,如果有cuda,则会选择GPU训练. 项目目录说明: CNN文件夹 ...

  3. 全连接、卷积、循环神经网络介绍

    神经网络简介 训练神经网络主要围绕下面四部分: 层,多个层组合成网络(或模型) 输入数据和相应目标 损失函数,即用于学习的反馈信号 优化器,决定学习过程如何进行 层.损失函数.优化器之间的关系: 层: ...

  4. 全连接神经网络_【模型解读】从“局部连接”回到“全连接”的Non-Local神经网络...

    文章首发于<有三AI> [模型解读]从"局部连接"回到"全连接"的神经网络​mp.weixin.qq.com 这是深度学习模型解读第9篇,本篇我们简 ...

  5. 【模型解读】“全连接”的卷积网络,有什么好?

    [模型解读]"全连接"的卷积网络,有什么好? 这是深度学习模型解读第8篇,本篇我们简单介绍Densenet. 作者&编辑 | 言有三 1 从skip connect到den ...

  6. 神经网络—卷积神经网络CNN

    定义 卷积神经网络(convolutional neural network)简称CNN,主要用于处理图像数据,但仍然可以处理其他形式的数据,像语音数据等.其最擅长的就是图片的处理,它具有人工神经元, ...

  7. 循环神经网络 - 卷积神经网络

    循环神经网络 - 卷积神经网络 传统的机器学习算法非常依赖于人工提取的特征,使得基于传统机器学习的图像识别.语音识别以及自然语言处理等问题存在特征提取的瓶颈. 基于全连接神经网络的方法存在参数太多.无 ...

  8. 卷积神经网络 神经网络,卷积神经网络基础知识

    卷积神经网络通俗理解 . 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetwork ...

  9. 神经网络 卷积神经网络,卷积神经网络 吴恩达

    吴恩达的人物经历 吴恩达1976年出生于伦敦,父亲是一位香港医生,英文名叫AndrewNg,吴恩达年轻时候在香港和新加坡度过. 1992年吴恩达就读新加坡莱佛士书院,并于1997年获得了卡内基梅隆大学 ...

  10. 卷积网络和卷积神经网络,卷积神经网络三大特点

    前馈神经网络.BP神经网络.卷积神经网络的区别与联系 一.计算方法不同1.前馈神经网络:一种最简单的神经网络,各神经元分层排列.每个神经元只与前一层的神经元相连.接收前一层的输出,并输出给下一层.各层 ...

最新文章

  1. 【Linux】多线程中使用fork()
  2. 思念水饺吃成泡沫水饺(图)思念质量门
  3. 分享一个在线考试系统,练手项目用他很香
  4. 理解统计信息(3/6):谁创建和管理统计信息?在性能调优中,统计信息的作用。...
  5. 简要分析光端机选购必备条件
  6. Ueditor的配置及使用
  7. ArcGIS操作实例视频教程38讲全集(转)
  8. 全自动高清录播服务器,常态化高清录播服务器 高清全自动录播系统
  9. Z3求解器简介及环境搭建
  10. C语言版,传教士与野人渡河问题,使用深度优先搜索法求解(DFS),变态版,随便输入人数和船的最大载人数,人工智能经典题目,简单易懂,注释到位,没有bug
  11. plt.subplots_adjust(wspace=0.01, hspace=0.01)
  12. DAP数据分析平台可视化组件开发
  13. CISSP考点拾遗——SDLC(1)
  14. Java——批量更改图片像素(大小)
  15. Snapman设计中的思考
  16. 手机上4G和WIFI情况下抓包总结
  17. jquery获取checkbox选中的值
  18. 小i机器人2019数博会C位秀肌肉 “认知智能”引领行业创新变革
  19. 『Hi,我是易建科技eKing Cloud!』
  20. 四川航天职业技术学院计算机网络期末考试,四川航天职业技术学院计算机网络技术专业...

热门文章

  1. [yum] yum将软件安装到指定的目录
  2. Ada 程序设计语言(The Ada Programming Language)[第一集]
  3. 学生成绩管理系统(xhh)
  4. 深度学习 week1 采访部分补充
  5. NEC Programming Contest 2021(AtCoder Beginner Contest 229) B - Hard Calculation
  6. 使用DriverManager动态加载JDBC驱动时,报:java.sql.SQLException: No suitable driver found for xxxx 错误
  7. QT QtableView操作详解
  8. BookKeeper存储设计浅析
  9. 1926163-51-0|肽基脯氨酰异构酶底物:WFY(p)SPR-7-氨基-4-甲基香豆素
  10. Lect3 最优化Optimization