✨机器学习笔记(六)—— ReLU、多分类问题、Softmax、Adam、反向传播

ops/2024/10/18 21:55:52/
Course2-Week2:
https://github.com/kaieye/2022-Machine-Learning-Specialization/tree/main/Advanced%20Learning%20Algorithms/week2

机器学习笔记(六)

  • 1️⃣ReLU(Rectified Linear Unit)
  • 2️⃣多分类问题
  • 3️⃣Softmax
  • 4️⃣Adam
  • 5️⃣ 反向传播(Back propagation)

1️⃣ReLU(Rectified Linear Unit)

✨ReLU function: a = g ( z ) = m a x ( 0 , z ) a =g(z)= max(0, z) a=g(z)=max(0,z)

ReLU 激活函数与线性和 Sigmoid 激活函数对比,三个都是常用的激活函数:

在这里插入图片描述

🎈在此示例中的派生的 “awareness” 特征是具有连续的值范围,Sigmoid 最适合 0/1 的二分类情况。而 ReLU 函数提供连续的线性关系,并且有一个 "off" 范围,可以关闭 z < 0 z < 0 z<0 的范围,让其输出 0,"off" 功能使 ReLU 成为非线性的激活函数。

在这里插入图片描述

🎈在输出层中,如果是二分类问题选择 Sigmoid 函数作为激活函数是个不错的选择;而对于线性输出(既有负值也有正值)可以选择线性函数作为激活函数;如果对于回归问题但是输出只有正值(如房屋价格),则选择 ReLU 函数作为激活函数就相当合适了。
🤓在输出层中激活函数的选取可以去考虑预测的 y ^ \hat y y^ 是个什么样的值来进行选取。

在这里插入图片描述

🎈在隐藏层中,其实除了二分类问题使用 Sigmoid 激活函数,基本上都使用 ReLU 激活函数。ReLU 相较于 Sigmoid 计算速度更快,因为只需要计算 m a x ( 0 , z ) max(0, z) max(0,z),而 Sigmoid 需要取幂、取负,相除等等,计算效率自然就低了;对于梯度下降,Sigmoid 在多个地方逐渐变平坦,就导致了 J ( w , b ) J(w,b) J(w,b) 的函数也有多个平坦的地方,难以到全局最小值,并且偏导数很小会使梯度下降的速度缓慢,而 ReLU 梯度下降会更快更好

在这里插入图片描述


✨选取激活函数方式的概括

在这里插入图片描述


🧐为什么神经网络需要激活函数?

🎈如果在神经网络中不使用激活函数:
在这里插入图片描述
🤓就会出现了将前一个线性回归得出的输出,作为下一个线性回归的输入去计算,最终其实就是线性函数的线性组合,则还是一个线性函数,这样的话就没有必要去写这么个多层的神经网络了,本质就是一个一层的输入输出映射,根本就不需要神经网络。

2️⃣多分类问题

多分类问题:目标值 y y y 的值多于 2 个的情况。
在这里插入图片描述
使用 P ( y = i ∣ x ⃗ ) P(y=i \mid \vec x) P(y=ix ) 表示在输入 x ⃗ \vec x x 上分类为第 i i i 种情况的概率。

3️⃣Softmax

Softmax 是 Sigmoid 的一般形式,用于处理多分类问题,由于我们已经学过了逻辑回归函数 Sigmoid,将两者对比来学习 Softmax 函数。

在这里插入图片描述

🤓由此可以看出 Sigmoid 是对于分类问题只有两个值 P ( y = 0 ∣ x ⃗ ) P(y=0 \mid \vec x) P(y=0x ) P ( y = 1 ∣ x ⃗ ) P(y=1 \mid \vec x) P(y=1x ) 时的特殊 Softmax 函数,也可以说 Softmax 回归模型是逻辑回归的泛化。

🎈再对比一下两者的损失函数:

在这里插入图片描述


🎗️神经网络的 Softmax 输出

🧐在具有 Softmax 输出的 softmax 回归和神经网络中,都会生成 N 个输出,并选择 1 个输出作为预测类别。在这两种情况下,向量 z z z 都是由应用于 softmax 函数的线性函数生成的。softmax 函数转换为概率分布,应用 softmax 后,每个输出将介于 0 和 1 之间,并且输出将加到 1,以便可以将其解释为概率。

在这里插入图片描述

4️⃣Adam

Adam: Adaptive Moment estimation

🤓 Adam 算法是梯度下降的优化算法,相较于原始的梯度下降算法,Adam 算法可以自适应学习率,让梯度下降的过程更快并且更加精准。当学习率过小时,梯度下降的过程缓慢,Adam 会增大学习率去加快速度;当学习率过大时,梯度下降并不精准,Adam 会减小学习率去更好的执行梯度下降。

在这里插入图片描述

✨代码实现:

在这里插入图片描述

5️⃣ 反向传播(Back propagation)

🎈顺序计算各个中间参数的过程为前向传播,而反向通过前面求出的参数的值或偏导值再求出偏导则是后向传播。

在这里插入图片描述

🤓反向传播可以很好的提高计算效率,对于 N N N 个这样的节点和 P P P 个参数的情况,通过计算图的反向传播可以只花费 N + P N + P N+P 步求出。如果普通的计算通过求出 N N N 个节点值再求每个 P P P 则要花费 N × P N × P N×P 步。可见后向传播的计算效率显著提高。

在这里插入图片描述


http://www.ppmy.cn/ops/119911.html

相关文章

技术成神之路:设计模式(十七)组合模式

介绍 组合模式&#xff08;Composite Pattern&#xff09;是一种结构型设计模式&#xff0c;它使你能够将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 1.定义 组合模式允许将叶子对象和组合对象&#xff08;容器…

SpringBoot项目 | 瑞吉外卖 | 短信发送验证码功能改为免费的邮箱发送验证码功能 | 代码实现

0.前情提要 之前的po已经说了单独的邮箱验证码发送功能怎么实现&#xff1a; https://blog.csdn.net/qq_61551948/article/details/142641495 这篇说下如何把该功能整合到瑞吉项目里面&#xff0c;也就是把原先项目里的短信发送验证码的功能改掉&#xff0c;改为邮箱发送验证…

【JAVA源码授权】

悯农二首 代码混淆加密 Class 文件许可证管理数字签名API 调用限制防止反编译使用私有库法律保护动态授权 其一 春种一粒粟&#xff0c;秋收万颗子。 四海无闲田&#xff0c;农夫犹饿死。 其二 锄禾日当午&#xff0c;汗滴禾下土。 谁知盘中餐&#xff0c;粒粒皆辛苦 代码混淆 …

【迁移学习入门之域适应的背景、理论与方法】进一步理解迁移学习啦?

【迁移学习入门之域适应的背景、理论与方法】进一步理解迁移学习啦? 【迁移学习入门之域适应的背景、理论与方法】进一步理解迁移学习啦? 文章目录 【迁移学习入门之域适应的背景、理论与方法】进一步理解迁移学习啦?1. 背景介绍2. 理论基础2.1 分布差异(Domain Shift)2.…

MacOS配置python环境

下载 Python 前往网站下载对应芯片和python版本的 installer。 配置环境变量 sudo vim ~/.bash_profile添加一下内容&#xff0c;注意修改文件名。 export PATH"/Library/Frameworks/Python.framework/Versions/3.11/bin:${PATH}" alias python"/Library/Fr…

如何改善网站的核心网络生命力

首先我们需要明确&#xff0c;没有什么办法可以100%确保解决某个问题&#xff0c;本文只列举了一些可以用于改善的问题解决方案&#xff0c;在实际维护中&#xff0c;您可能需要从更多的角度来不断优化您的站点。 此外&#xff0c;核心网页指标&#xff08;Core Web Vitals&…

tauri程序加载本地图片或者文件在前端页面展示

要想在前端页面中展示本地文件或者文件夹&#xff0c;需要使用convertfilesrc这个api&#xff0c;可以非常方便的展示内容&#xff0c;官方文档&#xff1a;tauri | Tauri Apps convertFileSrc甚至位于invoke之前&#xff0c;但我却一直没有注意到它&#xff0c;一方面是因为&…

ThreadLocal原理解析及面试

基本使用 讲原理之前&#xff0c;我简单写个demo小程序说说怎么使用 public class TestThreadLocal {public static void main(String[] args) throws InterruptedException {ThreadLocal<String> tl new ThreadLocal();/**主线程设置了一个值*/tl.set("SSSSSs&…