Neural Networks and Deep Learning学习笔记ch1 - 神经网络
近期開始看一些深度学习的资料。想学习一下深度学习的基础知识。找到了一个比較好的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使得该惩处值最小,这时能够觉得对神经网络学习得比較好了。
下一章中具体介绍神经网络训练用到的经典的反向传播算法。
參考
Neural Networks and Deep Learning学习笔记ch1 - 神经网络的更多相关文章
- Neural Networks and Deep Learning 课程笔记(第四周)深层神经网络(Deep Neural Networks)
1. 深层神经网络(Deep L-layer neural network ) 2. 前向传播和反向传播(Forward and backward propagation) 3. 总结 4. 深层网络 ...
- Neural Networks and Deep Learning 课程笔记(第三周)浅层神经网络(Shallow neural networks)
3.1 神经网络概述(Neural Network Overview ) (神经网络中,我们要反复计算a和z,最终得到最后的loss function) 3.2 神经网络的表示(Neural Netw ...
- Neural Networks and Deep Learning 课程笔记(第二周)神经网络的编程基础 (Basics of Neural Network programming)
总结 一.处理数据 1.1 向量化(vectorization) (height, width, 3) ===> 展开shape为(heigh*width*3, m)的向量 1.2 特征归一化( ...
- 【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 ...
- 【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 ...
- 第四节,Neural Networks and Deep Learning 一书小节(上)
最近花了半个多月把Mchiael Nielsen所写的Neural Networks and Deep Learning这本书看了一遍,受益匪浅. 该书英文原版地址地址:http://neuralne ...
- paper 149:Deep Learning 学习笔记(一)
1. 直接上手篇 台湾李宏毅教授写的,<1天搞懂深度学习> slideshare的链接: http://www.slideshare.net/tw_dsconf/ss-62245351? ...
- 【deep learning学习笔记】注释yusugomori的DA代码 --- dA.h
DA就是“Denoising Autoencoders”的缩写.继续给yusugomori做注释,边注释边学习.看了一些DA的材料,基本上都在前面“转载”了.学习中间总有个疑问:DA和RBM到底啥区别 ...
- Neural Networks and Deep Learning
Neural Networks and Deep Learning This is the first course of the deep learning specialization at Co ...
随机推荐
- HDU 5237 Base64 模拟
题意: 输入一个明文串,输出\(k\)次\(Base64\)加密以后得到的串. 分析: 好像没什么Trick,直接模拟就行了. 注意:长度为\(3k+1\)的串,后面会有两个\(=\).长度为\(3k ...
- Apache 根据不同的端口 映射不同的站点
以前,在本地新建个项目,总是在Apache的htdocs目录下新建个项目目录,今年弄了个别人写好的网站源码,因为该系统的作者假定网站是放在根目录的,放在二级目录下会出错.所以无奈,只能想办法,根据端口 ...
- GBDT 与 XGBoost
GBDT & XGBoost ### 回归树 单棵回归树可以表示成如下的数学形式 \[ f(x) = \sum_j^Tw_j\mathbf{I}(x\in R_j) \] 其中\(T\)为叶节 ...
- Leetcode 423.从英文中重建数字
从英文中重建数字 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9.按升序输出原始的数字. 注意: 输入只包含小写英文字母. 输入保证合法并可以转换为原始的数字,这意味着像 &quo ...
- php_strip_whitespace和trim的搭配使用
在学习kongphp框架时有这么一段代码是为了生成运行时文件的 $runfile = RUNTIME_PATH.'_runtime.php'; if(!is_file($runfile)) { $s ...
- Jeddict:从服务器的验证过程,思考学习新事物的套路
结合一路研究Jeddict使用的过程经验来看,在这里说一下关于服务器配置的东西.在我们团队,最开始用这个插件的时候,因为公司用的应用服务器是Jboss EAP 7,所以,我们自然而然的,想当然的直接使 ...
- POJ 2181 Jumping Cows
Jumping Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6398 Accepted: 3828 Desc ...
- Thinkphp5.1源码阅读
主要流程 1 \public\index.php require __DIR__ . '/../thinkphp/start.php'; \thinkphp\start.php require __D ...
- Xcode中断点的使用
注:本文由破船译自:albertopasca.本文由HoNooD在iosfeed站点上做了推荐. 这里先推荐两篇Xcode相关的文章: Xcode Code Snippets iOS调试 — 基本技巧 ...
- 在 Ubuntu 16.04 上安装 Eclipse Oxygen
2017 年 6 月 28 日,Eclipse 社区(the Eclipse Community)发布了 Eclipse Oxygen.本文记录了我在 Ubuntu 16.04 上安装 Eclipse ...