近期開始看一些深度学习的资料。想学习一下深度学习的基础知识。找到了一个比較好的tutorial,Neural Networks and Deep Learning,认真看完了之后觉得收获还是非常多的。从最主要的感知机開始讲起。到后来使用logistic函数作为激活函数的sigmoid neuron,和非常多其它如今深度学习中常使用的trick。

把深度学习的一个发展过程讲得非常清楚,并且还有非常多源代码和实验帮助理解。看完了整个tutorial后打算再又一次梳理一遍,来写点总结。以后再看其它资料了能够来更新,查漏补缺。温故而知新。

  • 感知机
  • Sigmoid神经元
  • 神经网络的结构
  • 用梯度下降法来学习
  • 參考

感知机-Perceptron

在讲神经网络之前,不得不提感知机。感知机在1950s和1960s由Frank Rosenblatt提出。是一种人为设计的neuron, 只是如今在神经网络中通常使用sigmoid neuron,但还是有必要了解一下感知机。



在上面这个样例中是一个感知机神经元,有三个输入x1,x2,x3,一个输出,output,另外对于每一输入另一个相应的权重系数。w1,w2,w3,神经元的输出仅仅有两个状态,0或者1,公式化地描写叙述为例如以下:

f(x)={01if∑jwjxj≤thresholdif∑jwjxj>threshold

有上面的公式能够非常easy地看出来感知机是怎么工作的。

可是能够看出,感知机的输出仅仅有 0 和 1。导致了感知机有一定的局限性,这让感知机看起来就仅仅是简单的逻辑门,并且还不能通过感知机构造出异或门。

关于感知机很多其它内容请看维基百科。所以就提出来一个新的neuron,能够让它的输出从0到1连续变化。

Sigmoid神经元-Sigmoid neurons



如上所看到的为一个神经网络,假设权重的微小变化能够让输出也相应有一个比較小的变化。那么就能够让这个神经网络做一个略微复杂一点的工作了。而之前的感知机的输出是二值的。仅仅有在阈值附近。输入的变化才可能导致神经元的输出变化。并且还是突变,这样一个神经网络就是有点数字化了的感觉。本科学的数字电路就是这样子的。所以就有人提出一个新的神经元,sigmoid neuron,该神经元使用Sigmoid_function作为激活函数。

sigmoid函数也叫logistic函数,在机器学习中非经常见,该函数表达式为 σ(z)=11+e−x,。该函数曲线例如以下:



能够看到sigmoid函数的输出是从 0 到 1 连续变化的,在 0 处函数值为0.5。

令x为神经元的输入∑jwjxj ,合起来就是σ(z)=11+e−∑jwjxj+b

另外,改变w,b的值,是能够改变曲线的形状的。具体说来,w越大。曲线在0处变化越陡,能够想象到当w足够大时,sigmoid的输出也就仅仅有0 和 1了,就和前面的感知机一样了。

神经网络的结构-The architecture of neural networks

神经网络通常由输入层、隐藏层和输出层组成,输入输出都是仅仅有一层。但隐藏层能够有多层。深度学习中就是通过添加隐藏层的层数来完毕一些比較复杂的功能。例如以下为一个神经网络:



通常情况下,神经网络的每两个相邻层之间的神经元都是两两相连接的。

用梯度下降法来学习-Learning with gradient descent

建立一个如上所看到的神经网络之后,须要通过训练来学习权重w,b,最经常使用的学习方法就是梯度下降法。

梯度下降是非经常常使用的优化目标函数的方法。给定训练数据,对于给定的输入,能够通过神经网络预測出一个输出。预測的输出假设和真实值不一致,那么就能够通过改变神经网络的系数权重来使系数往正确的方向变化。不断地学习最后就能达到一个比較好的结果。

首先要先定义一个代价函数,当预測的输出和预期的输出不一致时,就惩处该函数:

C(w,b)=12n∑x||y(x)−a||2

这里a是训练数据中的输出,是预期值,y(x)是对给定输入x的预測值,假设两者不一致,那么就让两者相减取平方作为惩处值。神经网络的学习过程即使通过调整权重w,b使得该惩处值最小,这时能够觉得对神经网络学习得比較好了。

下一章中具体介绍神经网络训练用到的经典的反向传播算法

參考

http://neuralnetworksanddeeplearning.com/chap1.html

Neural Networks and Deep Learning学习笔记ch1 - 神经网络的更多相关文章

  1. Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)

    1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...

  2. Neural Networks and Deep Learning 课程笔记(第三周)浅层神经网络(Shallow neural networks)

    3.1 神经网络概述(Neural Network Overview ) (神经网络中,我们要反复计算a和z,最终得到最后的loss function) 3.2 神经网络的表示(Neural Netw ...

  3. Neural Networks and Deep Learning 课程笔记(第二周)神经网络的编程基础 (Basics of Neural Network programming)

    总结 一.处理数据 1.1 向量化(vectorization) (height, width, 3) ===> 展开shape为(heigh*width*3, m)的向量 1.2 特征归一化( ...

  4. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week2 Neural Networks Basics课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week2 Neural Networks Basics 2.1 ...

  5. 【DeepLearning学习笔记】Coursera课程《Neural Networks and Deep Learning》——Week1 Introduction to deep learning课堂笔记

    Coursera课程<Neural Networks and Deep Learning> deeplearning.ai Week1 Introduction to deep learn ...

  6. 第四节,Neural Networks and Deep Learning 一书小节(上)

    最近花了半个多月把Mchiael Nielsen所写的Neural Networks and Deep Learning这本书看了一遍,受益匪浅. 该书英文原版地址地址:http://neuralne ...

  7. paper 149:Deep Learning 学习笔记(一)

     1. 直接上手篇 台湾李宏毅教授写的,<1天搞懂深度学习> slideshare的链接: http://www.slideshare.net/tw_dsconf/ss-62245351? ...

  8. 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h

    DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...

  9. Neural Networks and Deep Learning

    Neural Networks and Deep Learning This is the first course of the deep learning specialization at Co ...

随机推荐

  1. 解读Loadrunner网页细分图(Web Page Diagnostics)

    [转载的地址]https://www.cnblogs.com/littlecat15/p/9456376.html 一.启用网页细分图 首先在Controller场景设计运行之前,需要在菜单栏中设置D ...

  2. SDOJ 3696 Tree

    描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 输入 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行 每行 ...

  3. python随机数的产生

    导入 random模块  >>> import random 1.  random.random random.random()用于生成一个0到1的随机浮点数: 0 <= n ...

  4. TensorFlow batch normalize的使用

    TensorFlow batch normalize的使用 batch normalize 经常与CNN搭配使用,据一些研究表面,在RNN层数不是很深的时候使用batch normalize是会用损害 ...

  5. 【CCF】最优灌溉 最小生成树

    [AC] #include<iostream> #include<cstdio> #include<string> #include<cstring> ...

  6. oracle 导出表结构信息

    直接贴sql: select cols.table_name 表名, cols.column_name 列名, cols.data_type 字段类型, cols.data_length 长度, co ...

  7. scrapy之小试身手

    要爬取的网址是:http://quotes.toscrape.com/ 磕磕绊绊的写完了 spiders import scrapy from kkk.items import * class Quo ...

  8. Date对象在苹果手机下兼容问题的解决方法

    Date在不同浏览器中对于传入的时间字符串的格式要求是不一样的.比如在chrome浏览器的控制台中输入以下内容,会得到相应结果: Date.parse('2015-11-11 00:00:00') / ...

  9. GC overhead limit exceeded,tomcat修改jvm内存

    tomcat修改jvm内存 内存大小:-Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=512m -Dja ...

  10. javaweb学习总结(十八)——JSP属性范围(转)

    所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...