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 , meandelta 代表X的均值和标准差. 最终特征处于[-1, 1]区间.

对于图片, 可直接使用Min-Max Scaling

  • 即将每个特征除以255(每个像素分为R, G, B, 范围在0~255)使得值处于[0, 1].

2. 初始化参数

一般将 wb 随机选择.

3. 梯度下降(Gradient descent)

根据 w , b 和训练集,来训练数据.

  • 需要设定 迭代次数学习率 .

以下为大循环(迭代次数)中内容:

3.1 计算代价函数

对于\(x^{(i)} \in X\), 有

\[z^{(i)} = w^Tx^{(i)} + b
\]
\[ a^{(i)} = \hat{y}^{(i)} = sigmod(z^{(i)}) = \sigma(z^{(i)}) = \frac{1}{1 + e^{-z^{(i)}}}
\]
\[损失函数: {L}(a^{(i)}, y^{(i)}) = {L}(\hat{y}^{(i)}, y^{(i)}) = - y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)})
\]
\[A = (a^{(1)}, a^{(2)}, ... , a^{(m-1)}, a^{(m)})
= \sigma(w^TX+b)
= \frac{1}{1+e^{-(w^TX+b)}}
\]
\[代价函数: J(w,b) = -\frac{1}{m} \sum^{m}_{i=1} \mathcal{L}(\hat{y}^{(i)}, y^{(i)})
= -\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}{\partial a}
= \dfrac{\partial L(a, y)}{\partial a}
= -\frac{y}{a} + \frac{1-y}{1-a}
\]
\[\dfrac{da}{dz}
= (\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 z}
= \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 w}
= \dfrac{\partial L}{\partial z} \dfrac{\partial z}{\partial w}
= (a-y) · x
\]
\[\dfrac{\partial L}{\partial b}
= \dfrac{\partial L}{\partial z} \dfrac{\partial z}{\partial b}
= a-y
\]

根据 \(J = -\dfrac{1}{m} \sum L(a, y)​\) 最终可得:

\[\dfrac{\partial J}{\partial w}
= \dfrac{\partial J}{\partial a} \dfrac{\partial a}{\partial w}
= \dfrac{1}{m} X(A-Y)^T
\]
\[\dfrac{\partial J}{\partial b} = \dfrac{1}{m} \sum^{m}_{i=1} (a^{(i)} - y^{(i)})
\]
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笔记 逻辑回归典型的训练过程的更多相关文章

  1. Coursera Deep Learning笔记 改善深层神经网络:超参数调试 正则化以及梯度相关

    笔记:Andrew Ng's Deeping Learning视频 参考:https://xienaoban.github.io/posts/41302.html 参考:https://blog.cs ...

  2. Coursera Deep Learning笔记 改善深层神经网络:超参数调试 Batch归一化 Softmax

    摘抄:https://xienaoban.github.io/posts/2106.html 1. 调试(Tuning) 超参数 取值 #学习速率:\(\alpha\) Momentum:\(\bet ...

  3. Coursera Deep Learning笔记 改善深层神经网络:优化算法

    笔记:Andrew Ng's Deeping Learning视频 摘抄:https://xienaoban.github.io/posts/58457.html 本章介绍了优化算法,让神经网络运行的 ...

  4. Coursera Deep Learning笔记 深度卷积网络

    参考 1. Why look at case studies 介绍几个典型的CNN案例: LeNet-5 AlexNet VGG Residual Network(ResNet): 特点是可以构建很深 ...

  5. Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)

    参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...

  6. Coursera Deep Learning笔记 结构化机器学习项目 (下)

    参考:https://blog.csdn.net/red_stone1/article/details/78600255https://blog.csdn.net/red_stone1/article ...

  7. Coursera Deep Learning笔记 序列模型(一)循环序列模型[RNN GRU LSTM]

    参考1 参考2 参考3 1. 为什么选择序列模型 序列模型能够应用在许多领域,例如: 语音识别 音乐发生器 情感分类 DNA序列分析 机器翻译 视频动作识别 命名实体识别 这些序列模型都可以称作使用标 ...

  8. Coursera Deep Learning笔记 结构化机器学习项目 (上)

    参考:https://blog.csdn.net/red_stone1/article/details/78519599 1. 正交化(Orthogonalization) 机器学习中有许多参数.超参 ...

  9. Coursera Deep Learning笔记 卷积神经网络基础

    参考1 参考2 1. 计算机视觉 使用传统神经网络处理机器视觉的一个主要问题是输入层维度很大.例如一张64x64x3的图片,神经网络输入层的维度为12288. 如果图片尺寸较大,例如一张1000x10 ...

随机推荐

  1. fetch ios低版本兼容cannot clone a disturbed response

    报错信息 ios 11以下 cannot clone a disturbed response github.com/github/fetc- 问题发生场景 使用了一个或者多个三方库 三方库或者自己的 ...

  2. TCP超时重传、序列号、滑动窗口简介

    文章目录 12 TCP:传输控制协议(初步) 12.1 引言 12.1.1 ARQ和重传 12.1.2 分组窗口和滑动窗口 12.1.3 变量窗口:流量控制和拥塞控制 12.1.4 变量窗口:设置重传 ...

  3. 类型定义VS类型别名

    类型定义是在当前包中的一直存在的.输出%T,发现类型前面都有main.前缀 类型别名,其实还是它的根本类型,别名只存在在代码中.编译后就不存在了,还是根本类型.

  4. File Upload(文件上传)

    一句话木马 <?php @eval($_POST['key']); ?> /*eval(phpcode) eval() 函数把字符串按照 PHP 代码来计算. 该字符串必须是合法的 PHP ...

  5. IP 地址无效化

    给你一个有效的 IPv4 地址 address,返回这个 IP 地址的无效化版本. 所谓无效化 IP 地址,其实就是用 "[.]" 代替了每个 ".". 示例 ...

  6. CodeForce-808C Tea Party(结构体排序贪心)

    Tea Party CodeForces - 808C 现在有 n 个杯子,每个杯子的容量为 a1, a2, ..., an.他现在一共有 w 毫升茶 (w ≤ a1 + a2 + ... + an) ...

  7. Spring Cloud Hystrix 学习(一)

    在学习Hystrix之前,首先引入一个问题场景,服务雪崩.如下图所示: 可以看到,三个入口服务A.B.C最终都会请求到服务T.当服务T的请求过载,打满CPU都无法匹配请求的频率时,同步调用的上级服务就 ...

  8. PHP设计模式之模板方法模式

    模板方法模式,也是我们经常会在不经意间有会用到的模式之一.这个模式是对继承的最好诠释.当子类中有重复的动作时,将他们提取出来,放在父类中进行统一的处理,这就是模板方法模式的最简单通俗的解释.就像我们平 ...

  9. 写SQL的套路

    定义问题 转化问题 如要解决的问题是:查出每门课程成绩都大于80分学生的姓名,可以转化为:只要学生最小分数的课程大于80分,就是所有课程成绩都大于80分. 查询同名同姓学生名单并统计同名人数--> ...

  10. git 切换分支

      # 查看git源 git  remote -v git remote set-url origin http://mingzhanghui@xx.xx.xx.xx:8090/r/ENSO/weba ...