首页 > 其他分享 >【机器学习】softmax回归

【机器学习】softmax回归

时间:2023-07-31 15:57:09浏览次数:33  
标签:mathbf log max 回归 frac softmax 机器 sum

Softmax Regression

(多标签分类)将多输入的分类值转化为[0,1]的概率分布,进而进行逻辑回归算法

softmax能将差距大的数值距离拉得更大,但是数值可能会溢出

Softmax Function

数学表达式

\[a_j = \frac{e^{z_j}}{ \sum_{k=1}^{N}{e^{z_k} }} \]

代码

def my_softmax(z):
    ez = np.exp(z)              #element-wise exponenial
    sm = ez/np.sum(ez)
    return(sm)

cost function

数学表达式

loss:

\[\begin{equation} L(\mathbf{a},y)=\begin{cases} -log(a_1), & \text{if $y=1$}.\\ &\vdots\\ -log(a_N), & \text{if $y=N$} \end{cases} = -log\left(\frac{e^{z_2}}{ \sum_{i=1}^{N}{e^{z_i} }}\right) \end{equation} \]

化简

\[L(\mathbf{z})= -\left[z_2 - log( \sum_{i=1}^{N}{e^{z_i} })\right] = \underbrace{log \sum_{i=1}^{N}{e^{z_i} }}_\text{logsumexp()} -z_2 = C+ log( \sum_{i=1}^{N}{e^{z_i-C} }) -z_2 \;\;\;\text{where } C=max_j(\mathbf{z}) \]

cost function

\[\begin{align} J(\mathbf{w},b) = - \left[ \sum_{i=1}^{m} \sum_{j=1}^{N} 1\left\{y^{(i)} == j\right\} \log \frac{e^{z^{(i)}_j}}{\sum_{k=1}^N e^{z^{(i)}_k} }\right] \end{align} \]

代码

# compute f_x
model = Sequential(
    [ 
        Dense(25, activation = 'relu'),
        Dense(15, activation = 'relu'),
        Dense(4, activation = 'softmax')    # < softmax activation here
    ]
)
# compute loss
model.compile(
    loss=tf.keras.losses.SparseCategoricalCrossentropy(),
    optimizer=tf.keras.optimizers.Adam(0.001),
)
# gradient descent
model.fit(
    X_train,y_train,
    epochs=10
)

Numerical Stability

该模型使用指数函数,因而大数容易溢出,需要处理

数学原理

\[\begin{align} a_j &= \frac{e^{z_j}}{ \sum_{i=1}^{N}{e^{z_i} }} \frac{e^{-max_j(\mathbf{z})}}{ {e^{-max_j(\mathbf{z})}}} \\ &= \frac{e^{z_j-max_j(\mathbf{z})}}{ \sum_{i=1}^{N}{e^{z_i-max_j(\mathbf{z})} }} \end{align} \]

化简

\[a_j = \frac{e^{z_j-C}}{ \sum_{i=1}^{N}{e^{z_i-C} }} \quad\quad\text{where}\quad C=max_j(\mathbf{z}) \]

代码

def my_softmax_ns(z):
    """numerically stablility improved"""
    bigz = np.max(z)
    ez = np.exp(z-bigz)              # minimize exponent
    sm = ez/np.sum(ez)
    return(sm)

多类分类和多标签分类不一样

  • 多标签:无关物品分类
  • 多类:有概率关系的特征分类

标签:mathbf,log,max,回归,frac,softmax,机器,sum
From: https://www.cnblogs.com/MrFeng2997/p/17592022.html

相关文章

  • 【机器学习】协同过滤
    CollaborativeFilteringRecommenderSystems解决相似度问题概念准确率=\(accuracy=\frac{预测正确的样本}{总样本}\)精确率=\(precision=\frac{预测成功的正类}{预测的正类}\)【不能误检】召回率=\(recall=\frac{预测成功的正类}{总正类}\)【不能漏报】相......
  • 【机器学习】正则化
    RegularizedCostfunction forregularizedlinearregression数学表达式\[J(\mathbf{w},b)=\frac{1}{2m}\sum\limits_{i=0}^{m-1}(f_{\mathbf{w},b}(\mathbf{x}^{(i)})-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=0}^{n-1}w_j^2\]\[f_{\mathbf{w},b}(......
  • 【机器学习】决策树
    DecisionTree熵-entropy数学表达式\[H(p_1)=-p_1\text{log}_2(p_1)-(1-p_1)\text{log}_2(1-p_1)\]代码#UNQ_C1#GRADEDFUNCTION:compute_entropydefcompute_entropy(y):"""ComputestheentropyforArgs:y(n......
  • 【机器学习】K-Means
    K-Means找最接近的质心公式\[c^{(i)}:=j\quad\mathrm{that\;minimizes}\quad||x^{(i)}-\mu_j||^2\]其中,范式\(||X||\),其计算公式为\[||X||=\sqrt{x_1^2+x_2^2+\cdots+x_n^2}\]代码#UNQ_C1#GRADEDFUNCTION:find_closest_centroidsdeffind_closest......
  • 工业机器人的形态(非姿态)
    工业机器人的形态当我们描述机器人在空间的一个位姿时,通常使用直角坐标系、工具坐标系或用户坐标系(统称为笛卡尔坐标系)的点。但是同样的一个位姿对于关节坐标系来说可能有多个值。假定当六轴机器人处于零点位置时,各坐标系的值如下表。关节坐标系直角坐标系各轴均为0......
  • 【机器学习】多变量线性回归
    LinerRegressionwithMultipleVariable用向量实现的代码,单变量和多变量可以共用多变量线性回归相当于是单变量的扩展,主要还是按照模型假设、构造代价函数和研究代价函数的最小值这样的思路展开。与单变量线性回归不同的是,多变量线性回归还可能涉及到特征缩放的问题,主要原因......
  • 工业机器人坐标系详解(基于六轴串联机器人和SCARA机器人)
    工业机器人的坐标系机器人的坐标系是重中之重,它是理解机器人运动的基础。机器人所有运动的点位都是建立在坐标系的基础之上,所以如果坐标系不理解,那么就很难真实了解机器人是如何运动的。什么是坐标系?我们需要移动机器人来工作,但是如何让机器人移动?当然我们可以单独控制机器人的......
  • 【机器学习】单变量线性回归
    MLintroduction机器学习:从数据中学习,而不依赖于规则下编程的一种算法Goal:\(min_{w,b}(J(w,b))\)-提供一种衡量一组特定参数与训练数据拟合程度的方法SupervisedLearningrightanswer&&x->ylabelcategoriesRegressionClassificationUnsupervisedLearnin......
  • 2023 年 7 月 23 日机器学习发生了什么:OpenAI 的突破性变化、更好的关注和……
    保留网络:大型语言模型转换器的继承者他们引入了一种非常有前途的注意力变体。基本上,他们:抛弃软最大值让每个令牌只关注一个状态向量,而不是所有以前的令牌在每个头上分别做层规范相对于序列维度呈指数衰减注意力,每个头部具有不同的衰减系数这使他们能够有效地在......
  • [Robot]FANUC发那科机器人零点标定
    FANUC的机械原点校准是通过零点标定来进行,具体操作步骤如下。首先,需要设定变量$MASTER_ENB的值为1,具体步骤为。1.MENU-下一页-变量。2.ITEM-输入313-变量$MASTER_ENB的值设为1。(注:不一定是313,可以通过shift+上/下键进行快速翻页查找)。接下来,通过MENU-下一页-系统-零点标定/......