一文详解Softmax函数

28 篇文章 7 订阅
订阅专栏

原文链接:https://zhuanlan.zhihu.com/p/105722023

前言

提到二分类首先想到的可能就是逻辑回归算法。逻辑回归算法是在各个领域中应用比较广泛的机器学习算法。逻辑回归算法本身并不难,最关键的步骤就是将线性模型输出的实数域映射到[0, 1]表示概率分布的有效实数空间,其中Sigmoid函数刚好具有这样的功能。

sigmoid激活函数

例如使用逻辑回归算法预测患者是否有恶性肿瘤的二分类问题中,输出层可以只设置一个节点,表示某个事件A发生的概率为 [公式] ,其中x为输入。对于患者是否有恶性肿瘤的二分类问题中,A事件可以表示为恶性肿瘤或表示为良性肿瘤( [公式] 表示为良性肿瘤或恶性肿瘤),x为患者的一些特征指标。

拥有单个输出节点的二分类

对于二分类问题,除了可以使用单个输出节点表示事件A发生的概率 [公式] 外,还可以分别预测 [公式][公式] ,并满足约束: [公式] 。其中 [公式] 表示事件A的对立事件。

拥有两个输出节点的二分类

两个节点输出的二分类相比于单节点输出的二分类多了一个[公式]的约束条件,这个约束条件将输出节点的输出值变成一个概率分布,简单来说各个输出节点的输出值范围映射到[0, 1],并且约束各个输出节点的输出值的和为1。当然可以将输出为两个节点的二分类推广成拥有n个输出节点的n分类问题。

有没有将各个输出节点的输出值范围映射到[0, 1],并且约束各个输出节点的输出值的和为1的函数呢?

当然,这个函数就是Softmax函数。

1. 什么是Softmax?

Softmax从字面上来说,可以分成soft和max两个部分。max故名思议就是最大值的意思。Softmax的核心在于soft,而soft有软的含义,与之相对的是hard硬。很多场景中需要我们找出数组所有元素中值最大的元素,实质上都是求的hardmax。下面使用Numpy模块以及TensorFlow深度学习框架实现hardmax。

使用Numpy模块实现hardmax:

import numpy as np

a = np.array([1, 2, 3, 4, 5]) # 创建ndarray数组
a_max = np.max(a)
print(a_max) # 5

使用TensorFlow深度学习框架实现hardmax:

import tensorflow as tf

print(tf.version) # 2.0.0
a_max = tf.reduce_max([1, 2, 3, 4, 5])
print(a_max) # tf.Tensor(5, shape=(), dtype=int32)

通过上面的例子可以看出hardmax最大的特点就是只选出其中一个最大的值,即非黑即白。但是往往在实际中这种方式是不合情理的,比如对于文本分类来说,一篇文章或多或少包含着各种主题信息,我们更期望得到文章对于每个可能的文本类别的概率值(置信度),可以简单理解成属于对应类别的可信度。所以此时用到了soft的概念,Softmax的含义就在于不再唯一的确定某一个最大值,而是为每个输出分类的结果都赋予一个概率值,表示属于每个类别的可能性。

下面给出Softmax函数的定义(以第i个节点输出为例):

[公式] ,其中 [公式] 为第i个节点的输出值,C为输出节点的个数,即分类的类别个数。通过Softmax函数就可以将多分类的输出值转换为范围在[0, 1]和为1的概率分布。

引入指数函数对于Softmax函数是把双刃剑,即得到了优点也暴露出了缺点:

  • 引入指数形式的优点
y = e^{x}函数图像

指数函数曲线呈现递增趋势,最重要的是斜率逐渐增大,也就是说在x轴上一个很小的变化,可以导致y轴上很大的变化。这种函数曲线能够将输出的数值拉开距离。假设拥有三个输出节点的输出值为 [公式] 为[2, 3, 5]。首先尝试不使用指数函数 [公式] ,接下来使用指数函数的Softmax函数计算。

import tensorflow as tf

print(tf.version) # 2.0.0
a = tf.constant([2, 3, 5], dtype = tf.float32)

b1 = a / tf.reduce_sum(a) # 不使用指数
print(b1) # tf.Tensor([0.2 0.3 0.5], shape=(3,), dtype=float32)

b2 = tf.nn.softmax(a) # 使用指数的Softmax
print(b2) # tf.Tensor([0.04201007 0.11419519 0.8437947 ], shape=(3,), dtype=float32)

两种计算方式的输出结果分别是:

  • tf.Tensor([0.2 0.3 0.5], shape=(3,), dtype=float32)
  • tf.Tensor([0.04201007 0.11419519 0.8437947 ], shape=(3,), dtype=float32)

结果还是挺明显的,经过使用指数形式的Softmax函数能够将差距大的数值距离拉的更大。

在深度学习中通常使用反向传播求解梯度进而使用梯度下降进行参数更新的过程,而指数函数在求导的时候比较方便。比如 [公式]

  • 引入指数形式的缺点

指数函数的曲线斜率逐渐增大虽然能够将输出值拉开距离,但是也带来了缺点,当 [公式] 值非常大的话,计算得到的数值也会变的非常大,数值可能会溢出。

import numpy as np

scores = np.array([123, 456, 789])
softmax = np.exp(scores) / np.sum(np.exp(scores))
print(softmax) # [ 0. 0. nan]

当然针对数值溢出有其对应的优化方法,将每一个输出值减去输出值中最大的值。
[公式]
[公式]
import numpy as np

scores = np.array([123, 456, 789])
scores -= np.max(scores)
p = np.exp(scores) / np.sum(np.exp(scores))
print(p) # [5.75274406e-290 2.39848787e-145 1.00000000e+000]

这里需要注意一下,当使用Softmax函数作为输出节点的激活函数的时候,一般使用交叉熵作为损失函数。由于Softmax函数的数值计算过程中,很容易因为输出节点的输出值比较大而发生数值溢出的现象,在计算交叉熵的时候也可能会出现数值溢出的问题。为了数值计算的稳定性,TensorFlow提供了一个统一的接口,将Softmax与交叉熵损失函数同时实现,同时也处理了数值不稳定的异常,使用TensorFlow深度学习框架的时候,一般推荐使用这个统一的接口,避免分开使用Softmax函数与交叉熵损失函数。

TensorFlow提供的统一函数式接口为:

import tensorflow as tf

print(tf.version) # 2.0.0
tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits = False)

其中y_true代表了One-hot编码后的真实标签,y_pred表示网络的实际预测值:

  • 当from_logits设置为True时,y_pred表示未经Softmax函数的输出值;
  • 当from_logits设置为False时,y_pred表示为经过Softmax函数后的输出值;

为了在计算Softmax函数时候数值的稳定,一般将from_logits设置为True,此时tf.keras.losses.categorical_crossentropy将在内部进行Softmax的计算,所以在不需要在输出节点上添加Softmax激活函数。

import tensorflow as tf

print(tf.version)
z = tf.random.normal([2, 10]) # 构造2个样本的10类别输出的输出值
y = tf.constant([1, 3]) # 两个样本的真是样本标签是1和3
y_true = tf.one_hot(y, depth = 10) # 构造onehot编码

# 输出层未经过Softmax激活函数,因此讲from_logits设置为True
loss1 = tf.keras.losses.categorical_crossentropy(y_true, z, from_logits = True)
loss1 = tf.reduce_mean(loss1)
print(loss1) # tf.Tensor(2.6680193, shape=(), dtype=float32)

y_pred = tf.nn.softmax(z)
# 输出层经过Softmax激活函数,因此讲from_logits设置为True
loss2 = tf.keras.losses.categorical_crossentropy(y_true, y_pred, from_logits = False)
loss2 = tf.reduce_mean(loss2)
print(loss2) # tf.Tensor(2.668019, shape=(), dtype=float32)

虽然上面两个过程结果差不多,但是当遇到一些不正常的数值时,将from_logits设置为True时TensorFlow会启用一些优化机制。因此推荐使用将from_logits参数设置为True的统一接口。

2. Softmax函数求导

单个输出节点的二分类问题一般在输出节点上使用Sigmoid函数,拥有两个及其以上的输出节点的二分类或者多分类问题一般在输出节点上使用Softmax函数。其他层建议使用的激活函数可以参考下面的文章。

触摸壹缕阳光:深度学习中常用激活函数总结 zhuanlan.zhihu.com图标

现在可以构建比较复杂的神经网络模型,最重要的原因之一得益于反向传播算法。反向传播算法从输出端也就是损失函数开始向输入端基于链式法则计算梯度,然后通过计算得到的梯度,应用梯度下降算法迭代更新待优化参数。

由于反向传播计算梯度基于链式法则,因此下面为了更加清晰,首先推导一下Softmax函数的导数。作为最后一层的激活函数,求导本身并不复杂,但是需要注意需要分成两种情况来考虑。

来源李宏毅老师PPT

为了方便说明,先来简单看一个小例子。

简单计算图

可以将梯度看成是高维的导数,而导数简单来说就是切线的斜率,也就是y轴的改变量与x轴的改变量的比值。通过上面的计算图可以得知, [公式][公式] 的改变量都会影响 [公式] 的值,因此需要让[公式][公式][公式]分别求导,很明显此时计算出来的两个偏导数结果不同, [公式][公式]

绘制拥有三个输出节点的Softmax函数的计算图:

拥有三个输出节点的Softmax函数的计算图

回顾Softmax函数的表达式:

[公式] ,其中i表示输出节点的编号。

影响 [公式] 的有与之相连的 [公式] ,因此需要分别求出 [公式] 。此时输出值[公式][公式] ,很明显 [公式][公式] 结果不同,而 [公式] 只需换相应索引号即可。因此在对Softmax函数求导的时候,需要分两种情况考虑。即对第i个输出节点,分为对 [公式][公式] 求导以及其它 [公式][公式] 求导。

  • [公式] 时,类似前面介绍的 [公式] 。Softmax函数的偏导数 [公式] 可以展开为:

[公式]

上面使用了函数相除的导数运算,由于是对 [公式] 求导数,由于此时 [公式] ,因此 [公式] 的导数还是[公式]本身,对 [公式] 求导结果只保留 [公式] 。因此上面求导的结果为:

[公式]

提取公共项 [公式] :

[公式]

拆分成两个部分:

[公式]

为了方便,将Softmax函数表达式 [公式] 表示为 [公式] ,结果为 [公式] ,由于此时 [公式][公式] ,因此最终结果为 [公式]

  • [公式]时,类似前面介绍的 [公式] [公式] 。Softmax函数的偏导数 [公式] 可以展开为:

[公式]

上面使用了函数相除的导数运算,由于是对 [公式] 求导数,由于此时 [公式] ,因此 [公式] 相当于常数,常数的导数为0,对 [公式] 求导同样只保留 [公式] 。因此上面求导的结果为:

[公式]

分解两项相乘:

[公式]

为了方便,将Softmax函数表达式 [公式] 表示为 [公式] ,结果为 [公式] ,由于此时 [公式] ,因此最终结果为 [公式]

对于Softmax函数的梯度推导依然使用的是导数的基本运算,并不复杂。最关键的是要对[公式] 以及 [公式] 两种情况分别讨论。偏导数的最终表达式如下:

[公式]

3. 交叉熵损失函数

接下来看一看Softmax的损失函数。回顾Softmax函数的表达式:

[公式] ,其中i表示输出节点的编号。

假设此时第i个输出节点为正确类别对应的输出节点,则 [公式] 是正确类别对应输出节点的概率值。添加 [公式] 运算不影响函数的单调性,首先为 [公式] 添加 [公式] 运算:

[公式]

由于此时的 [公式] 是正确类别对应的输出节点的概率,当然希望此时的 [公式]越大越好(当然最大不能超过1)。通常情况下使用梯度下降法来迭代求解,因此只需要为 [公式] 加上一个负号变成损失函数,现在变成希望损失函数越小越好:

[公式]

对上面的式子进一步处理:

[公式]

这样就将上面的Softmax一步一步转换成了Softmax的损失函数。

但是通常我们说起交叉熵往往是下面的式子:

[公式]

那上面这种形式的损失函数和上面通过Softmax函数一步一步转换推导成的损失函数有什么区别呢?

为了方便将第一个 [公式] 命名为式子1,将通常的交叉熵损失函 [公式] 数命名为式子2。其实式子1和式子2本质上是一样的。对于式子1来说,只针对正确类别的对应的输出节点,将这个位置的Softmax值最大化,而式子2则是直接衡量真实分布和实际输出的分布之间的距离。

对于分类任务来说,真实的样本标签通常表示为one-hot的形式。比如对于三分类来说,真实类别的索引位置为1,也就是属于第二个类别,那么使用one-hot编码表示为[0, 1, 0],也就是仅正确类别位置为1,其余位置都为0。而式子2中的 [公式] 就是真实样本的标签值,将[0, 1, 0]代入式子2中即 :[公式]

最终的结果为 [公式] ,式子1只是对正确类别位置计算损失值 [公式]

既然式子1和式子2两个损失函数一样,那么接下来计算损失函数的导数使用比较常见的式子2,也就是 [公式] ,在这里直接推导最终损失函数 [公式] 对网络输出变量 [公式] 的偏导数,展开为:

[公式]

接下来利用复合函数分解成:

[公式]

[公式] ,其中 [公式] 就是我们前面推导的Softmax函数的偏导数。

对于Softmax函数分为两种情况,因此需要将求和符号拆分成 [公式] 以及 [公式] 这两种情况,代入[公式]求解公式,可得:

[公式]

进一步进一步化简为:

[公式]

提取公共项 [公式] ,可得:

[公式]

至此完成了对交叉熵函数的梯度推导。对于分类问题中标签y通过one-hot编码的方式,则有如下关系:

[公式]

因此将交叉熵的偏导数进一步简化为:

[公式]

虽然求导过程非常废杂,但是最终推导的结果非常简单。

最后为了直观的感受Softmax与交叉熵的效果,我使用一个简单的输出值[4, -4, 3],通过计算做了下面三分类的表格。

按比例推所有拉一个

此时 [公式] 是模型输出的实际值,而 [公式] 是真实的标签值。

  • 计算交叉熵损失值:
import tensorflow as tf

print(tf.version) # 2.0.0
z = tf.constant([4, -4, 3], dtype = tf.float32)
y_hat = tf.nn.softmax(z)
y = tf.one_hot(2, depth = 3)
print(“x:”,z)
print(“y_hat:”, y_hat)
print(“y:”, y)

CE = tf.keras.losses.categorical_crossentropy(y, z, from_logits = True)
CE = tf.reduce_mean(CE)

print(“cross_entropy:”, CE)

输出结果:

x: tf.Tensor([ 4. -4.  3.], shape=(3,), dtype=float32)

y_hat: tf.Tensor([7.3087937e-01 2.4518272e-04 2.6887551e-01], shape=(3,), dtype=float32)

y: tf.Tensor([0. 0. 1.], shape=(3,), dtype=float32)

cross_entropy: tf.Tensor(1.3135068, shape=(), dtype=float32)

  • 计算梯度值:
import tensorflow as tf

print(tf.version) # 2.0.0
z = tf.constant([4, -4, 3], dtype = tf.float32)

# 构造梯度记录器
with tf.GradientTape(persistent = True) as tape:
tape.watch([z])
# 前向传播过程
y = tf.one_hot(2, depth=3)
CE = tf.keras.losses.categorical_crossentropy(y, z, from_logits=True)
CE = tf.reduce_mean(CE)

dCE_dz = tape.gradient(CE, [z])[0]
print(dCE_dz)

输出结果:

<tf.Tensor: id=60, shape=(3,)
, dtype=float32, numpy=array([ 7.3087937e-01, 2.4518272e-04, -7.3112452e-01], dtype=float32)>

最后参数更新只需看最后一行,可以看出Softmax和交叉熵损失函数的梯度下降更新结果:

  1. 先将所有的 [公式] 值减去对应的Softmax的结果,可以简单记为推所有;
  2. 然后将真实标记中的对应位置的值加上1,简单记为拉一个;

总的概括Softmax+交叉熵损失函数参数更新为"推所有,拉一个"。

参考:
1. 三分钟带你对 Softmax 划重点
2. 《TensorFlow深度学习》
3. 触摸壹缕阳光:[L4]使用LSTM实现语言模型-softmax与交叉熵
求解高维复杂函数的遗传-灰狼混合算法
01-12
高维函数优化一般是指维数超过100维的函数优化问题,由于“维数灾难”的存在,求解起来十分困难.针对灰狼算法迭代后期收敛速度慢,求解高维函数易陷入局部最优的缺点,在基本灰狼算法中引入3种遗传算子,提出一种遗传-灰狼混合算法(hybrid genetic grey wolf algorithm,HGGWA).混合算法能够充分发挥两种算法各自的优势,提高算法的全局收敛性,针对精英个体的变异操作有效防止算法陷入局部最优值.通过13个标准测试函数和10个高维测试函数验证算法的性能,并将优化结果与PSO、GSA、GWO三种基本算法以及9种改进算法进行比较.仿真结果表明,所提算法在收敛精度方面得到了极大改进,验证了HGGWA算法求解高维函数的有效性.
详解softmax函数以及相关求导过
wzy的博客
03-21 6692
这几天学习了一下softmax激活函数,以及它的梯度求导过程,整理一下便于分享和交流! softmax函数 softmax用于多分类过程中,它将多个神经元的输出,映射到(0,1)区间内,可以看成概率来理解,从而来进行多分类! 假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的softmax值就是更形象的如下图表示: softmax直白来说就是将原来输出是3
softmax详解
modi000的博客
01-16 222
batch的大小为3,经过softmax回归输出的结果是一个3×3的二维矩阵,根据交差熵的公式,应该将每行的结果相加得到3个输入样本的的交差熵,然后在对3行取平均得到这个batch的平均交差熵。常用的方法是使用交差熵(cross entropy),它的计算值表征两个概率分布之间的距离,它是分类问题中使用比较广的损失函数。这里的softmax可以看做一个激励【activation】函数或者链接【link】函数,把我们定义的线性函数的输出转化成我们想要的格式,也就是关于10个数字类别的概率分布。
梯度下降、牛顿法凸优化、L1、L2正则化、softmax、Batchnorm、droupout、Targeted Dropout详解
小岁月太着急
12-09 5177
一、梯度下降 问题提出:虽然给定一个假设函数,我们能够根据cost function知道这个假设函数拟合的好不好,但是毕竟函数有这么多,总不可能一个一个试吧?因此我们引出了梯度下降:能够找出cost function函数的最小值; 梯度下降背后的思想是:开始时我们随机选择一个参数的组合(θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做...
一文彻底搞懂 Softmax 函数,数学原理分析和 PyTorch 验证
qq_43799400的博客
06-14 6189
Softmax 函数的数学原理分析和 PyTorch 使用
一分钟理解softmax函数(超简单)
热门推荐
L.Z.的博客
11-28 38万+
做过多分类任务的同学一定都知道softmax函数softmax函数,又称归一化指数函数。它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。下图展示了softmax的计算方法: 下面为大家解释一下为什么softmax是这种形式。 首先,我们知道概率有两个性质:1)预测的概率为非负数;2)各种预测结果概率之和等于1。 softmax就是将在负无穷到正无...
What is the Softmax Function?详解机器学习中的Softmax函数【小白菜可懂】
FreeBird
12-28 6962
softmax函数是把K个实值转换为另外K个实值并使K个实值之和为1的函数。输入数值可以是正数/负数/0或者几种的组合,经过softmax函数转换为[0,1]之间的数值,以便于用来描述概率分布。如果一个输入数值很小或负数,softmax函数则将它转换为小的概率值;如果一个输入数值很大,softmax函数则将它转换为大的概率值,每一个转换后的数值都将保持在[0,1]的范围之内。
干货 | 浅谈 Softmax 函数
小白学视觉
01-04 3603
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达来自 | 知乎 作者 |LinT仅作学术交流,如有侵权,请联系删除0. 引言Softmax函数几乎是深度学习中...
输出层的激活函数——softmax函数
weixin_46021869的博客
05-07 4532
概括 机器学习的问题大致可以分为分类问题和回归问题。分类问题是数据属于哪一个类别的问题。比如,区分图像中的人是男性还是女性的问题就是分类问题。而回归问题是根据某个输入预测一个(连续的)数值的问题。比如,根据一个人的图像预测这个人的体重问题是回归问题(类似“57.4kg”这样的预测)。 输出层所用的激活函数,根据求解问题的性质决定。一般,回归问题可以用恒等函数,二元分类问题可以用sigmoid函数,多元分类问题可以用softmax函数。 恒等函数:输出=输入 softmax函数:输出为一个函数 其中exp
Softmax函数概述——2020.2.8
MumuziD的博客
02-08 786
一、softmax函数简介 softmax作为输出层的激励函数,在机器学习中常被看作是一种多分类器。通俗的意思就是,将一个物品输入,得出其中可能属于的类别概率(soft),最后得出最大可能性的判别(max)。下图为softmax的具体计算流程: 其中,3、1、-3为输入值,计算以e为底的幂,之后求各类别之和,每个类别的输出值为,保证了各个类别输出值总和 ≤ 1(即:)。...
SoftMax函数
weixin_39910711的博客
09-26 4245
目录 1 Softmax的形式 2hardmax的特性 3softmax和hardmax的相似性 4 softmax函数概率模型构建 5softmax函数优化 1 Softmax的形式 Softmax函数是在机器学习中经常出现的,时常出现在输出层中。 softmax的表达式: 而下面我们要...
Softmax函数原理及Python实现过程解析
09-16
主要介绍了Softmax函数原理及Python实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
关于tensorflow softmax函数用法解析
09-16
主要介绍了关于tensorflow softmax函数用法解析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
softmax函数推导
01-01
softmax函数的详细推导过程,看完了就知道softmax怎么来的为什么这么弄。
python编写softmax函数、交叉熵函数实例
09-16
主要介绍了python编写softmax函数、交叉熵函数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
海尔智能电视刷机数据 U49A5 机编DH1W80A0305 务必确认机编一致 强制刷机 整机USB升级主程序
03-27
务必确认机身编号与文件名机编一致,如不一致,请勿下载 机身编号一般在机子背面的贴纸上 升级方法: 1、下载数据,压缩包解压,将“Haier638Upgrade.bin”文件拷贝到U盘根目录下(U盘要求使用FAT32格式,建议4G-8G的品牌U盘,刷机成功率会高) 2、电视关机拔下电源,插入U盘,按住机身按键板上的“菜单”键不放,插电开机,直到LED灯开始闪表示升级正在进行,升级成功后机器会自动重起。 3、重启之后,重新交流上电,升级完成。 注意: 1、升级到结束,大约需要8-30分钟,中途绝对不能断电 2、升级重启第一次进入系统,请等完全正常进入开机桌面之后,才能拨下U盘
c语言c++项目源代码_c语言对自己电脑系统测试.rar
03-27
**C语言电脑系统测试项目** 本项目是一个基于C语言的实用工具,旨在为您的电脑系统提供全面的性能测试与评估。通过执行一系列精心设计的测试用例,该工具能够评估您的电脑在处理器速度、内存管理、磁盘性能以及网络连接等方面的表现。 项目的核心功能包括: 1. **处理器性能测试**:通过执行复杂的算法和计算任务,评估处理器的运算速度和效率。 2. **内存测试**:检查内存分配、读写速度和稳定性,确保系统的内存管理达到最佳状态。 3. **磁盘性能测试**:评估硬盘或固态硬盘的读写速度、I/O性能和文件系统效率。 4. **网络性能测试**:测量网络连接的速度和稳定性,包括上传和下载速度以及延迟。 此外,该项目还提供了详细的测试报告功能,帮助您全面了解系统的优势和潜在瓶颈。测试结果以直观易懂的图表和数字形式呈现,便于分析和解读。 此项目采用模块化设计,方便您进行二次开发和定制,以满足特定需求。无论是硬件评测爱好者还是系统管理员,都能从该项目中受益良多。
pypy3.8-v7.3.6rc3-s390x.tar.bz2
03-27
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
强化学习的Q-Learn算法ppt资源
最新发布
03-27
强化学习的主要算法:包括Q-learning、SARSA、DQN、A3C、TRPO、PPO和SAC等。这些算法各有特点,适用于不同的场景和任务。例如,Q-learning和SARSA是基于值函数的强化学习算法,旨在学习最优策略以最大化累积奖励;而DQN则是深度强化学习算法,使用神经网络来估计值函数,并通过反向传播算法更新网络参数。 强化学习在多个领域具有广泛应用。在自动驾驶系统中,强化学习可以帮助车辆感知周围环境并做出决策,实现自主行驶。在医疗领域,强化学习可以用于辅助医生进行病例分析、诊断和治疗方案制定,提高医疗服务的准确性和效率。此外,强化学习还在智能物流和仓储管理、金融投资决策等领域发挥着重要作用。
softmax函数特点
05-22
softmax函数是一种常用的激活函数,通常用于多分类问题中。它的特点如下: 1. 将输入值映射到0到1之间的概率分布。softmax函数可以将一个向量中的每个元素映射到0到1之间,并且所有元素的和等于1。这使得softmax...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 深度学习之特征融合(高低层特征融合) 42926
  • 深度学习算法面试题总结(38题) 35980
  • Python中的lambda最完整的讲解 20295
  • 下载安装IDM Integration Module和其使用方法 18016
  • (太长太全面了)CNN超详细介绍 12838

分类专栏

  • 强化学习 25篇
  • 李宏毅2022深度学习课程 1篇
  • 3D人脸对齐和重建 27篇
  • 人脸检测 13篇
  • 深度学习原理 28篇
  • 目标检测 29篇
  • NLP基础 31篇
  • 游戏脸 3篇
  • 简明Python教程 8篇
  • 软件安装与小问题 11篇
  • 人脸交换和重现 5篇
  • 笨方法学Python 23篇
  • Linux学习 1篇
  • C++ 3篇
  • 经典模型 15篇
  • 数据结构与算法 16篇
  • 面试 10篇
  • 插件
  • 数学 3篇
  • 机器学习 21篇
  • Python快速上手 2篇
  • Git 1篇

最新评论

  • (简洁)Yolov3详解

    zmn12345: 你好能分享一下v3的框架图吗

  • 影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现)

    CSDN-Ada助手: 不知道 Python入门 技能树是否可以帮到你:https://edu.csdn.net/skill/python?utm_source=AI_act_python

  • 知网CAJ直接PDF下载,并且autoBookMark添加书目

    m0_74163093: 为什么添加成功了 但是不能实现跳转呢 而且标签名称里还带上了页码数

  • (预测时候Decoder是怎么输入?)transformer 模型的decoder部分 带gif动图

    鱼小冬~: 当然呀,训练时的每句话不是也加上了起始符嘛

  • python快速入门篇1-数据结构与算法(Python)

    oppdamss: 零基础征服数据结构算法Python版 下载地址:https://download.csdn.net/download/iolahkuy/87689144

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 影响PPO算法性能的10个关键技巧(附PPO算法简洁Pytorch实现)
  • (专栏,满满踩坑干货)深度强化学习落地方法论(7)—— 训练篇
  • 李宏毅-2022机器学习-课程笔记-1深度学习简介
2024年2篇
2023年9篇
2022年15篇
2021年72篇
2020年186篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家合肥玻璃钢垃圾桶价格百色玻璃钢花瓶加工咸宁玻璃钢医疗外壳加工河源商场美陈公司湛江玻璃钢花箱哪家好辽阳玻璃钢垃圾桶生产厂家德州玻璃钢花钵价格常德玻璃钢医疗外壳加工邢台玻璃钢设备外壳厂家直销桂林玻璃钢树池批发邯郸商场美陈生产厂家哈密玻璃钢公仔雕塑哪家好大同玻璃钢医疗外壳价格合肥玻璃钢定做张掖玻璃钢景观雕塑制作钦州玻璃钢摆件哪家好黄石玻璃钢装饰工程批发锦州玻璃钢江苏玻璃钢休闲椅加工自贡玻璃钢机械外壳定制汕头玻璃钢公司兰州玻璃钢坐凳公司长治玻璃钢摆件厂家直销本溪玻璃钢休闲椅厂家直销鹤岗玻璃钢设备外壳张掖玻璃钢雕塑定制咸宁玻璃钢制作深圳玻璃钢景观雕塑制造丽江玻璃钢造型生产厂家金昌玻璃钢花池多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化