学习笔记-神经网络初级入门
来源:互联网 发布:php 模拟微信浏览器 编辑:程序博客网 时间:2024/05/29 17:50
1. 写作背景
——刚学到的知识如果不及时记录下来,很快就会被遗忘。
从上个月开始我就开始在Coursera平台学习吴恩达老师开设的深度学习课程。今天我已经学完第一门课程,并已经获得证书。这门课程不像之前的机器学习课程提供了完整的授课ppt,因为担心自己学完后会很快就忘记,以后回忆起来太费劲,所以决定在这里写下自己学习这门课程的笔记。
当然,我只会记录对我将来回忆有帮助的信息。只希望自己以后回忆起来会容易些。
由于前段时间刚学完吴老师的机器学习课程,并且其中有一章专门讲了神经网络,因此学习这门新课会简单轻松很多,所需要的背景基础知识基本都在机器学习课程里学过了。
2. 整体认识
线性回归→逻辑回归→神经网络
2.1 线性回归
线性回归是最简单也是最基础的机器学习算法;线性回归的原理:每个自变量乘以各自相应的系数,求和并加上一个常数项。公式如下:
2.2 逻辑回归
逻辑回归用于分类任务,它在线性回归的计算结果后面添加了一个叫做Sigmoid的激活函数,公式如下:
因为线性回归计算的结果是连续的数值,而分类任务的结果要求是不连续的类别,Sigmoid函数正好可以做到这一点。
2.3 神经网络
神经网络算法也主要用于解决分类任务,并且它的功能更为强大。上面提到的逻辑回归模型可以看做一个简单的单层神经网络模型,即没有隐藏层的神经网络。下图为一个典型的具有一个隐藏层的神经网络模型:
除了输入层外,其它每层的节点都可以看作由上一层所有节点经线性转换,再经激活函数映射所得。这里的激活函数包括之前提到的Sigmoid函数,还包括Relu函数。一般来说,对于神经网络算法,Sigmoid函数一般只用在最后对输出层的映射,中间的隐藏层用到的激活函数为Relu。Relu函数的公式如下:
(其它的激活函数暂时没用到,所以先不讨论)
2.3.1 构造浅层神经网络
下面是我们将要构造的模型的结构,即:输入层由两个元素组成;只有一个隐藏层,包含四个节点;输出层只有一个节点。
对于任意一个样本,需要经过如下的运算,最后获得预测值。
(注:这个模型中,隐藏层的激活函数为
计算所有输入样本的损失函数:
搭建神经网络模型的一般思路:
1. 自定义该模型的结构(如输入变量个数、层数、节点数等);
2. 初始化模型的参数;
3. 循环:
3.1 部署前向传播(Forward propagation)
3.2 计算损失值
3.3 部署反向传播,并获得相应的梯度;
3.4 更新参数(梯度下降)
部署反向传播算法是整个环节最难的一部分,以下是相应的公式:
从上图可以看到,在反向传播的计算过程中,用到了中间层的
以下为该浅层神经网络的中间迭代过程:
2.3.2 构造深层神经网络
深层神经网络意味着包含多个隐藏层,它是浅层神经网络的升级版,但是整个思路还是一样的。
- 初始化所有的参数;
- 部署前向传播模块;
( 在这里我们将隐藏层的激活函数设为relu,输出层的激活函数选择sigmoid;)
- 计算损失值;
- 部署反向传播模块;
- 更新参数;
① 前向传播的构造
结构:[LINEAR→RELU]×(L-1)→LINEAR→SIGMOID
( it has L-1 layers using a ReLU activation function followed by an output layer with a sigmoid activation function)
② 损失值计算:
③ 反向传播模块的构造
已知
其中
从上述公式我们发现有一点特别的地方:在每次计算
首先,输出层即
dAL = - (np.divide(Y, AL) - np.divide(1 - Y, 1 - AL))
并且前一层
④ 更新参数
方法前面在浅层神经网络已经讲过。
注:如无特殊说明,以上所有图片均截选自吴恩达在Coursera开设的神经网络课程的讲义。
- 学习笔记-神经网络初级入门
- 神经网络初级认知笔记
- 深度学习入门课程笔记 神经网络
- 机器学习入门笔记(六)----神经网络
- css学习初级入门
- Linux初级入门学习
- Hadoop入门——《Hadoop实战初级部分》学习笔记
- "神经网络入门" 笔记
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 吴恩达深度学习入门学习笔记之神经网络和深度学习(第二周:神经网络基础)
- 深度学习(三):初级卷积神经网络
- 深度学习(三):初级卷积神经网络
- 神经网络入门学习(一(
- 神经网络入门--学习资源
- 深度神经网络入门学习
- 卷积神经网络入门学习
- 卷积神经网络(cnn)学习笔记1:入门
- 卷积神经网络(CNN)学习笔记1:基础入门
- 线程安全
- Javaweb之cookic
- NOIP赛前总结
- hihocoder1014 trie树模板
- 一个用JAVA解析TXT格式文本文档的程序举例
- 学习笔记-神经网络初级入门
- 关于在阿里云服务器或者腾讯云服务器(或者两者混合)搭建Hadoop 2.0 HA的注意事项
- cocos Creator自定义事件机制
- 关于TensorFlow的MNIST数据集下载脚本input_data.py的坑
- U
- JS滚轮事件(mousewheel/DOMMouseScroll)了解
- VTK初级学习
- ROS 卡尔曼滤波
- g_signal_connect