近期開始看一些深度学习的资料。想学习一下深度学习的基础知识。找到了一个比較好的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. hdu2604 递推转换矩阵快速幂

    刚开始还以为用位运算与或几下几个循环就搞定了,算着算着发现不行........ 还是一种固定的切题角度,我假设有长度为n,总的排列数位f(n),怎么算他呢?从后往前考虑,因为大多数情况,都是用前面的结 ...

  2. Windows清理打印池的方法

    另存为bat运行   @echo off title 快速清除打印队列 echo. echo 停止打印机服务 net stop spooler>nul echo. del /q /f %wind ...

  3. rocketmq源码分析2-broker的消息接收

    broker消息接收,假设接收的是一个普通消息(即没有事务),此处分析也只分析master上动作逻辑,不涉及ha. 1. 如何找到消息接收处理入口 可以通过broker的监听端口10911顺藤摸瓜式的 ...

  4. 九度oj 1006

    题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:20252 解决:3544 题目描述:                        对给定的字符串(只包含'z', ...

  5. NSUserDefaults 简介

    NSUserDefaults适合存储轻量级的本地数据,一些简单的数据(NSString类型的)例如密码,网址等,NSUserDefaults肯定是首选,但是如果我们自定义了一个对象,对象保存的是一些信 ...

  6. hive查询语法

    1.创建表: >create table value_data(citing INT,cited INT) >row format delimited >fields termina ...

  7. ubuntu 安装tomcat<服务器>

    一.下载tomcat 可以先下载到本地,然后ftp到服务器 官方 Apache Tomcat 的下载页面(下面的链接是apache自己的镜像服务器的地址,不同网络连接的话,apache会给出不同的镜像 ...

  8. HDU——1027Ignatius and the Princess II(next_permutation函数)

    Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K ( ...

  9. [LOJ#6002]「网络流 24 题」最小路径覆盖

    [LOJ#6002]「网络流 24 题」最小路径覆盖 试题描述 给定有向图 G=(V,E).设 P 是 G 的一个简单路(顶点不相交)的集合.如果 V 中每个顶点恰好在 P 的一条路上,则称 P 是  ...

  10. javaweb-简单的验证码和算术验证码

    我们登陆网站时,每次都会填写一些验证码,这些验证码的作用:防止被恶意攻击,验证码上面的字母数字一般都是随机生成的,因此我们首先要写一个方法生成一个随机的字符串,这里就需要java里面的随机函数Rand ...