近期開始看一些深度学习的资料。想学习一下深度学习的基础知识。找到了一个比較好的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. Aizu 2450 Do use segment tree 树链剖分

    题意: 给出一棵\(n(1 \leq n \leq 200000)\)个节点的树,每个节点有一个权值. 然后有\(2\)种操作: \(1 \, a \, b \, c\):将路径\(a \to b\) ...

  2. MyBatis拦截器打印不带问号的完整sql语句方法

    /* Preparing: SELECT * FROM tb_user WHERE id = ? AND user_name = ?  目标是打印:SELECT * FROM tb_user WHER ...

  3. TensorFlow学习笔记(6):TensorBoard之Embeddings

    本文基于TensorFlow官网的How-Tos写成. TensorBoard是TensorFlow自带的一个可视化工具,Embeddings是其中的一个功能,用于在二维或三维空间对高维数据进行探索. ...

  4. 最新版浏览器报错net::ERR_INSECURE_RESPONSE原因

    访问的网址与接口请求的域名不一致,新版的chrome浏览器出于安全的考虑会将请求进行拦截,并报错net::ERR_INSECURE_RESPONSE

  5. vim的复制粘贴(包括系统剪贴板)

    1.vim常用复制粘贴命令 Vim的复制粘贴命令无疑是y (yank),p(paster),加上yy,P PS: vim有个很有意思的约定(我觉得是一种约定),就是某个命令的大小写都是实现某种功能,只 ...

  6. Censoring(bzoj 3940)

    Description Farmer John has purchased a subscription to Good Hooveskeeping magazine for his cows, so ...

  7. FZOJ Problem 2148 Moon Game

                                                                                                  Proble ...

  8. Why do I keep getting mixed tabs and spaces in a Visual Studio C# code window?[vs power tools issue transfered]

    goto tools->option->power tools-> turn "use mixed tabs" option to off. you won`t ...

  9. hdu 4506(数学,循环节+快速幂)

    小明系列故事——师兄帮帮忙 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tot ...

  10. AC日记——Andryusha and Socks Codeforces 780a

    A. Andryusha and Socks time limit per test 2 seconds memory limit per test 256 megabytes input stand ...