Jiahong 的个人博客

凡事预则立,不预则废


  • Home

  • Tags

  • Archives

  • Navigation

  • Search

Linux——find命令详解


整体说明

  • tee 命令是 Linux 中的一个常用工具,主要功能是将标准输入同时输出到两个地方 :
    • 一个是标准输出(stdout,通常是终端屏幕)
    • 另一个是指定的文件
  • tee 命令的作用类似于“三通管”,既让数据在屏幕上可见,又能保存到文件中,避免了“输出重定向(>)会隐藏屏幕显示”的问题
  • TLDR:tee 的核心价值就是“一份输入,双重输出(屏幕 + 文件)”,在需要同时查看和保存命令结果时非常方便

基本用法示例:

  • 查看系统信息并保存到文件:

    1
    uname -a | tee system_info.txt
    • 屏幕上会显示 uname -a 的输出结果
    • 同时会创建 system_info.txt 文件,内容与屏幕输出一致
  • 使用 -a 选项可以追加内容(默认是覆盖文件):

    1
    echo "新内容" | tee -a system_info.txt
    • 屏幕显示“新内容”
    • 同时将“新内容”追加到 system_info.txt 末尾,原有内容保留

技巧:配合 sudo 编辑无写入权限的文件

  • 这是 tee 非常实用的场景

  • 例如,普通用户想向 /etc 目录下的文件写入内容(需要 root 权限):

    1
    echo "配置内容" | sudo tee /etc/some_config.conf
  • 避免了直接用 sudo echo "..." > /etc/... 因权限问题失败的情况

  • 既能看到输出,又能正确写入有权限要求的文件

Linux——tmux工具使用说明


整体说明

  • tmux(Terminal Multiplexer 的缩写)是 Linux/Unix 系统的一款优秀的终端复用工具 (一般 Linux 系统默认自带,无需封装),也是 GNU Screen 的升级版,功能更强大、设计更优雅
  • tmux 的核心作用包括:
    • 1)借助 tmux,在远程连接服务器时,即使 断开 SSH 连接、终端关闭、网络中断 ,tmux 里运行的程序也不会停止,重新连接后可无缝恢复会话继续操作
    • 2)一个终端窗口中,创建 多个会话、多个窗口、多个分屏面板 ,无需开多个终端窗口,高效管理多个任务
    • 3)支持会话分离/接入、窗口切换、面板缩放、快捷键操作等,是后端开发/运维必备工具

安装 tmux

  • 几乎所有 Linux 发行版都能通过包管理器一键安装,系统默认一般不带,执行对应命令即可

  • CentOS / RHEL / Fedora (yum/dnf)

    1
    2
    yum install -y tmux  # CentOS7
    dnf install -y tmux # CentOS8+/Fedora
  • Ubuntu / Debian / Deepin (apt)

    1
    apt update && apt install -y tmux
  • MacOS (brew)

    1
    brew install tmux
  • 安装完成后,终端输入 tmux -V 验证版本,显示版本号即安装成功


tmux 核心概念

  • tmux 的结构是 会话 > 窗口 > 面板 三层嵌套,从大到小 包含关系

会话 (Session)

  • 最顶层的独立运行环境,一个 tmux 可以创建多个相互独立的会话
  • 每个会话有唯一的「会话名」或「会话ID」,可以随时分离(detach) 或接入(attach)
  • 分离会话:会话在后台继续运行,当前终端退出 tmux 界面
  • 接入会话:重新进入之前分离的会话,恢复所有操作界面,程序正常运行

窗口 (Window)

  • 一个会话里可以创建多个 窗口 ,默认占满整个屏幕,窗口之间可以快速切换
  • 类似浏览器的 标签页,比如:一个窗口跑项目日志、一个窗口执行代码部署、一个窗口做文件编辑

面板 (Pane)

  • 一个窗口里可以分割成多个 面板(分屏),所有面板在同一个窗口中显示,共享当前会话环境
  • 类似终端的「分屏功能」,比如:左边面板编辑代码、右边面板实时运行程序,上下面板分别查看日志和执行命令

tmux 通用操作规则

  • tmux 所有的功能操作,都依赖 前缀键+ 功能键 的组合方式,这是 tmux 的核心操作逻辑:

前缀键 (Prefix Key)

  • 默认的前缀键是: Ctrl + b (先按住 Ctrl 和 b 一起松开,再按后面的功能键)

tmux 命令两种执行方式

  • 快捷键方式 :前缀键 + 功能键,效率最高,日常使用99%的场景都用这个;
  • 命令行方式 :在 tmux 终端中输入 tmux 命令参数,适合会话管理(创建/接入/删除)等场景

基础核心操作

  • 会话是 tmux 最核心的功能,所有操作都围绕会话展开,以下命令全部在系统原生终端执行(未进入 tmux 时)

  • 创建新会话

    1
    2
    tmux  # 创建无名称会话,默认会话ID从0开始
    tmux new -s 会话名 # 推荐!创建指定名称的会话,比如 tmux new -s project
  • 分离当前会话(核心!不会停止程序)

    • 方式一:进入 tmux 会话后,执行快捷键:Ctrl+b d(放开 CTRL+b 后再按 d)
    • 方式二:在 tmux 终端输入 tmux detach
    • 方式三:在其他外部终端输入 tmux detach -t 会话名/会话ID
    • 方式四:直接关闭窗口(SSH 或 网页窗口),不建议这种方式,可能存在问题?
    • 注:以上四种方式下,当前终端退出 tmux 界面,回到系统原生终端,tmux 会话在后台继续运行 ,里面的程序不会停止
  • 彻底关闭当前会话:

    1
    2
    exit # 简单命令
    tmux kill-session # 明确关闭当前 session
  • 查看所有后台会话

    1
    tmux ls  # 列出所有会话,格式:会话名: 窗口数 (创建时间) [终端大小]
  • 接入/恢复指定会话(核心)

    1
    2
    tmux a  # 简写,接入最近的一个会话
    tmux a -t 会话名/会话ID # 推荐!精准接入指定会话,比如 tmux a -t project
  • 关闭/杀死指定会话

    1
    2
    tmux kill-session -t 会话名/会话ID  # 比如 tmux kill-session -t project
    tmux kill-server # 慎用!杀死所有 tmux 会话,停止 tmux 服务
  • 重命名当前会话

    • 进入 tmux 会话后,快捷键:Ctrl+b $,然后输入新的会话名即可

窗口管理(待测试)

  • 窗口 = tmux 的 标签页,一个会话可以创建多个窗口,所有操作均在 tmux 会话内执行(快捷键为主)
  • 核心快捷键(均需先按 Ctrl+b 松开,再按对应键):
    • 1)c → 创建一个新的窗口(默认名称为当前路径)
    • 2)w → 弹出窗口列表,按上下键选择,回车切换
    • 3)n → 切换到下一个窗口(按创建顺序)
    • 4)p → 切换到上一个窗口(按创建顺序)
    • 5)数字键 0~9 → 快速切换到指定序号的窗口(窗口默认从0开始编号)
    • 6), → 重命名当前窗口(比如给窗口命名为 log、deploy、edit)
    • 7)& → 关闭当前窗口(会有确认提示,按 y 确认)
  • 注:这里有个 小技巧,tmux 底部状态栏会显示当前会话的所有窗口,* 标记的是当前激活的窗口

面板管理(待测试)

  • 面板 = tmux 的 分屏,一个窗口可以分割成多个面板,所有操作均在 tmux 会话内执行 ,这是 tmux 提升效率的核心功能
  • 核心快捷键(均需先按 Ctrl+b 松开,再按对应键):
  • 面板分割(创建面板)
    • %:垂直分割 ,将当前面板分成左右两个面板(最常用)
    • ":水平分割 ,将当前面板分成上下两个面板
  • 面板切换(重点)
    • 方向键 ↑ ↓ ← →,切换到对应方向的面板(最直观,推荐)
    • o,按顺序循环切换所有面板
    • ;, 切换到上一次操作的面板
  • 面板调整/操作
    • Ctrl + 方向键 , 调整当前面板的边框大小(按住 Ctrl+b 不放,再按方向键,持续调整)
    • x , 关闭当前面板(光标所在面板,会有确认提示,按 y 确认)
    • z , 面板最大化/还原 :当前面板占满整个窗口,再按一次恢复原大小(看日志/长代码必备)
    • ! , 将当前面板独立成新窗口 :适合需要单独放大某个面板的场景

Python-Jupyter——将ipynb文件转成py文件

jupyter nbconvert --to script test.ipynb 

ML——共轭梯度法和最速下降法

本文介绍共轭梯度法和最速下降法

  • 最速下降法(Steepest Descent Method)和共轭梯度法(Conjugate Gradient Method, CG)也是求解无约束最优化问题的优化方法,其他无约束优化方法见:ML——求解无约束最优化问题的优化方法
  • 共轭梯度法是以共轭方向为搜索方向的一类算法,最早用于求解线性方程组,后来用于求解无约束最优化问题
  • 最速下降法和共轭梯度法都仅限于求解正定矩阵对应的方程或正定二次型对应的无约束最优化问题

优化问题定义

  • 在满足一定要求的情况下,求解线性方程组的解和求解最优化问题有一定的等价性
  • 当 \(A\) 为对称正定矩阵时,有下面的两个问题等价:
    • 问题一:求解线性方程组
      $$ Ax = b $$
    • 问题二:求解最优化问题的解
      $$ \min_x \frac{1}{2}(x - x^*)^TA(x - x^*) $$
      • 其中 \(x^*\) 为线性方程组的解
    • 等价原因:正定矩阵 \(A\) 使得二次型 \((x - x^*)^TA(x - x^*) \) 一定大于等于0,当二次型 \((x - x^*)^TA(x - x^*) = 0 \) 时,一定有 \(x=x^*\)
  • 对以上最优化问题进一步化简有:
    • 上图中用到了以下性质:
      • 对称正定矩阵的性质: \(A = A^T\)
      • \(x^*\) 为线性方程组的解: \(Ax^* = b\)
    • 上图中 \((Ax,x)\) 表示内积
  • 思考:对于参数数量为2的问题,实际上原始优化问题 \((x - x^*)^TA(x - x^*)\) 的等值线可以理解为是一个椭圆,原始问题的最优解在多个椭圆的圆心
    • 为什么是一个椭圆,因为正定矩阵可以被对角化为一个对角线上元素都是正数的对角矩阵 ,即正定二次型一定可以化简为系数全为正的标准型
    • 假设 \(A\) 已经是一个对角矩阵,对角线上的数字为 \(d_1, d_2\),那么原始二次型对应的 \(c\) 等值线为: \((x - x^*)^TA(x - x^*) = d_1x_1^2+d_2x_2^2 = c\)

最速下降法

  • 最速下降法推导

    • 上面的式子中,最后一步的推导是直接展开以后得到
      $$
      \begin{align}
      &=\frac{1}{2} (A(x+\alpha r, x+\alpha r)) - (b, (x+\alpha r)) \\
      &= \frac{1}{2} (x^TA^Tx + \alpha r^TA^Tx + \alpha x^TA^Tr + \alpha^2r^TA^Tr) - (b^Tx+\alpha b^T r) \\
      &= \frac{1}{2}( 2\alpha r^TA^Tx) + \frac{1}{2}\alpha^2r^TA^Tr - \alpha b^T r + \frac{1}{2}x^TA^Tx - b^Tx\\
      &= \alpha r^TA^Tx + \frac{1}{2}\alpha^2r^TA^Tr - \alpha (Ax + r)^T r + \frac{1}{2}x^TA^Tx - b^Tx\\
      &= \alpha r^TA^Tx + \frac{1}{2}\alpha^2r^TA^Tr - \alpha x^TA^Tr + \alpha r^Tr + \frac{1}{2}x^TA^Tx - b^Tx\\
      &= \alpha r^TA^Tx - \alpha x^TA^Tr + \frac{1}{2}\alpha^2r^TA^Tr + \alpha r^Tr + \frac{1}{2}x^TA^Tx - b^Tx\\
      &= 0 + \frac{1}{2}\alpha^2r^TA^Tr + \alpha r^Tr + \frac{1}{2}x^TA^Tx - b^Tx\\
      &= \frac{1}{2}\alpha^2r^TA^Tr + \alpha r^Tr + \frac{1}{2}x^TA^Tx - b^Tx\\
      \end{align}
      $$
    • 上面的推导中使用到了 \(b = Ax + r\),和 \(x^TA^Tr = x^TAr = (x, Ar) = (Ar, x) = r^TA^Tx \)
    • 其中 \( \frac{1}{2}x^TA^Tx - b^Tx\) 与 \(\alpha\) 无关
  • 最速下降法的流程及收敛性分析

    • 收敛速度与特征值有关,当特征值之间的差距过大时,收敛可能会比较慢
  • 最速下降法的收敛性图示分析

    • 如果运气好,也可能一步到位,如果运气不好则可能要很久才收敛

共轭梯度法

  • 共轭梯度法的引入
    • \(p_{k-1}\) 是上次迭代的方向, \(p_{k}\) 是本次迭代的方向,初始该值设置为 \(p_{-1} = 0\),或第一步按照 \(p_0 = r_0\) 迭代
    • 步长推导和最速下降法推导一致
  • 共轭梯度法的方向
    • 共轭的含义为:
    • 共轭梯度法名字的由来 :
      • 共轭来自于: \( \forall i, \quad (Ap_{i},p_{k}) = 0\),每一步迭代的方向与之前的所有步都是共轭相对于矩阵 \(A\) 共轭的
      • 梯度则来自于下降的方向 \(r\) 是原始目标函数 \(\frac{1}{2}(x - x^*)^TA(x - x^*) = \frac{1}{2}(Ax, x)- (b, x)\) 的梯度,由于 \(r\) 同时也是方程 \(Ax = b\) 的残差 \(r = b-Ax\),所以也会称 \(r\) 为残差
  • 共轭梯度法的性质
  • 共轭梯度法的流程
    % asset_img Conjugate-Gradient-Method-5.png %}
    • 注意:第0步使用 \(p_0 = r_0\)
  • 共轭梯度法收敛性

ML——损失函数总结

各种损失函数(Loss Function)总结,持续更新


名词概念

在机器学习和统计学中,成本函数(Cost Function)、经验风险(Empirical Risk)和损失函数(Loss Function)是三个密切相关但又有所区别的概念

  • 损失函数(Loss Function): 损失函数衡量的是单个训练样本的预测值与实际值之间的差异。它是模型预测误差的量化表示。常见的损失函数包括均方误差(Mean Squared Error, MSE)、交叉熵损失(Cross-Entropy Loss)等
  • 成本函数(Cost Function): 又名代价函数,等价于损失函数
  • 期望风险(Expected Risk):所有样本(训练样本+验证样本+测试样本+未知样本)的损失函数的期望,用于评估模型的泛化能力
  • 经验风险(Empirical Risk): 经验风险是在给定数据集上(一般是训练集),模型的平均损失。它是所有训练样本损失函数值的平均,用于评估模型在特定数据集上的表现。经验风险可以视为模型在有限数据集上的泛化能力的估计,本质是对期望风险的一种估计
  • 结构风险(Structural Risk):用于平衡模型对样本的拟合能力和复杂度
    $$
    结构风险 = 经验风险 + \alpha 正则化项
    $$
  • 注意:在一般的书籍或者博客论文中,尝尝也用 损失函数 或 成本函数 笼统的表达了 成本函数、经验风险、损失函数、成本函数、甚至结构风险 等所有相关概念 ,所以本文下面也会比较笼统称为损失函数

损失函数总体说明

  • 损失函数(Loss Function)又称为代价函数(Cost Function)
  • 损失函数用于评估预测值与真实值之间的不一致程度
  • 损失函数/成本函数是模型的优化目标函数,(神经网络训练的过程就是最小化损失函数的过程)
  • 损失函数/成本函数越小,说明预测值越接近于真实值,模型表现越好

各种损失函数介绍

平方损失函数

最常用的回归损失函数

  • 基本形式
    $$loss = (y - f(x))^{2}$$
  • 对应模型
    • 线性回归
      • 使用的均方误差来自于平方损失函数
        $$loss_{MSE} = \frac{1}{m}\sum_{i=1}^{m}(y_{i} - f(x_{i}))^2$$
    • 其他扩展,RMSE(Root Mean Squared Error,常用作指标而不是损失函数)
      $$loss_{RMSE} = \sqrt{\frac{1}{m}\sum_{i=1}^{m}(y_{i} - f(x_{i}))^2}$$

MSLE/RMSLE损失函数

  • MSLE,Mean Squared Logarithmic Error
    $$loss_{MSLE} = \frac{1}{m}\sum_{i=1}^{m} \left(\log(1+y_{i}) - \log(1+f(x_{i})) \right)^2$$
  • RMSLE,Root Mean Squared Logarithmic Error
  • 损失函数形式
    $$loss_{RMSLE} = \sqrt{\frac{1}{m}\sum_{i=1}^{m} \left(\log(1+y_{i}) - \log(1+f(x_{i})) \right)^2}$$
  • MSLE和RMSLE可缓解长尾变量导致的异常值问题

MAPE/MSPE/RMAPE/RMSPE损失函数

  • MAPE,Mean Absolute Percentage Error
    $$loss_{MAPE} = \frac{1}{m}\sum_{i=1}^{m} \left|\frac{y_i-f(x_i)}{y_i}\right|$$
  • MSPE,Mean Squared Percentage Error
    $$loss_{MSPE} = \frac{1}{m}\sum_{i=1}^{m} \left(\frac{y_i-f(x_i)}{y_i}\right)^2$$
  • RMAPE/RMSPE在MAPE/MSPE的基础上开根号即可
  • MAPE/MSPE/RMAPE/RMSPE都可缓解长尾变量导致的异常值问题

绝对值损失函数

最常用的回归损失函数

  • 基本形式
    $$loss = |y - f(x)|$$
  • 对应的经验风险:
    $$loss_{MAE} = \frac{1}{m}\sum_{i=1}^{m}|y_{i} - f(x_{i})|$$

交叉熵损失函数(对数似然损失函数)

最常见的损失函数交叉熵损失函数 ,又名对数似然损失函数

  • 基本形式(目标:在已知X时,样本标签Y出现的概率最大化,损失函数在概率前加个负号即可)
    $$loss=L(P_{\theta}(Y|X))=-logP_{\theta}(Y|X)$$
  • 二分类中的交叉熵损失函数:
    $$loss_{CE} = \frac{1}{N} \sum_{i}^{N}-y_ilogy_i’ - (1-y_i)log(1-y_i’)$$
    • 二分类中对于单个样本的损失一般写为:
      $$loss(x_i) = -y_ilogy_i’ - (1-y_i)log(1-y_i’)$$
    • 写成最容易看清楚的形式为:
      $$
      \begin{align}
      loss(x_i) &= -logy_i’, &\quad y_i = 1 \\
      loss(x_i) &= -log(1-y_i’), &\quad y_i = 0
      \end{align}
      $$
      • \(y_i\) 为样本 \(x_i\) 的真实类别
      • \(y_i’\) 为样本 \(x_i\) 在模型中的预测值(这个值在二分类中为Sigmoid函数归一化后的取值,代表样本分类为 \(y_i=1\) 的概率)
      • \(y_i’\) 也可表达为 \(p_{i,1}\),即样本 \(i\) 分类为1的概率
  • 多分类中的交叉熵损失函数:
    $$loss_{CE} = -\frac{1}{N} \sum_{i}^{N}\sum_{c=1}^{C} y_{i,c}\log p_{i,c}^{\theta}$$
    • \(y_{i,c} \in \{0, 1\}\):当样本 \(i\) 的真实分类是 \(c\) 时, \(y_{i,c}=1\),否则 \(y_{i,c}=0\)
    • \(p_{i,c}^{\theta}\):表示样本 \(i\) 为分类 \(c\) 的预估概率,由 \(y_{i,c} \in \{0, 1\}\) 可知损失函数不需要关注样本预测为其他错误类别的概率,仅关注真实样本对应类别的概率即可
    • 二分类的场景实际上是多分类的特定形式, \(1-y_i’\) 可以用来表示分类为0时的概率
  • 凡是极大似然估计作为学习策略的模型,损失函数都为交叉熵损失函数(对数似然损失函数)
    • 因为极大化似然函数等价于极小化对数似然损失函数,推导:
      $$
      \begin{align}
      \theta^{*} &= \mathop{\arg\max}_{\theta} \prod_i P_{\theta}(y_i|x_i) \\
      &= \mathop{\arg\max}_{\theta} \sum_i \log P_{\theta}(y_i|x_i) \\
      &= \mathop{\arg\min}_{\theta} - \sum_i \log P_{\theta}(y_i|x_i) \\
      &= \mathop{\arg\min}_{\theta} - \frac{1}{N} \sum_{i}^{N}\sum_{c=1}^{C} y_{i,c}\log p_{i,c}^{\theta}
      \end{align}
      $$
    • <<统计学习方法>>第十二章中LR使用的是极大似然估计但是对应的损失函数是逻辑斯蒂损失函数,这里可以证明LR中对数似然损失函数和逻辑斯蒂损失函数完全等价,证明见统计学习方法212页笔记
  • 对应模型
    • 所有使用极大似然估计的模型
      • 可以证明,极大似然估计法最大化样本出现概率的目标是最小化真实分布和预估分布的KL散度
        • 为了方便证明,下面把 \(P_{\theta}(y_i|x_i)\) 写作 \(P_{\theta}(x_i)\),这里 \(x_i\) 包含了样本的label( \(y_i\) )信息
          $$
          \begin{align}
          \theta^{*} &= \mathop{\arg\min}_{\theta} - \frac{1}{N} \sum_{i}^{N}\sum_{c=1}^{C} y_{i,c}\log p_{i,c}^{\theta} &\quad — 交叉熵损失函数\\
          &= \mathop{\arg\min}_{\theta} - \sum_i \log P_{\theta}(x_i) &\quad — 交叉熵损失函数\\
          &= \mathop{\arg\max}_{\theta} \sum_i \log P_{\theta}(x_i) \\
          &= \mathop{\arg\max}_{\theta} \prod_i P_{\theta}(x_i) &\quad — 极大似然法\\
          &= \mathop{\arg\max}_{\theta} \sum_i \log P_{\theta}(x_i) \\
          &\approx \mathop{\arg\max}_{\theta} \mathbb{E}_{x \sim P_{data}}\log P_{\theta}(x) \\
          &= \mathop{\arg\max}_{\theta} \int_{x} P_{data}(x) \log P_{\theta}(x) dx \\
          &= \mathop{\arg\max}_{\theta} \int_{x} P_{data}(x) \log P_{\theta}(x) dx - \int_{x} P_{data}(x) \log P_{data}(x) dx &\quad — 减去一项与\theta无关的项\\
          &= \mathop{\arg\max}_{\theta} \int_{x} P_{data}(x) \log \frac{P_{\theta}(x)}{P_{data}(x)} dx \\
          &= \mathop{\arg\max}_{\theta} -\int_{x} P_{data}(x) \log \frac{P_{data}(x)}{P_{\theta}(x)} dx \\
          &= \mathop{\arg\min}_{\theta} \int_{x} P_{data}(x) \log \frac{P_{data}(x)}{P_{\theta}(x)} dx \\
          &= \mathop{\arg\min}_{\theta} KL(P_{data}|| P_{\theta}) &\quad — KL散度\\
          \end{align}
          $$
        • 上式表明:似然函数最大化(极大似然法,对应交叉熵损失最小化),等价于最小化真实分布与预估分布的KL散度
        • 注:式中 \(x_i\) 样本表示<特征,标签>对, \(P_{\theta}(x_i)\) 表示在模型 \(\theta\) 下,真实<特征,标签>出现的概率
      • 同理,可以证明,最小化交叉熵损失函数的目标也是最小化真实分布和预估分布的KL散度
    • 最大化后验概率等价于最小化对数似然损失函数
      $$\theta^{\star} = \mathop{\arg\max}_{\theta} LL(\theta) = \mathop{\arg\min}_{\theta} -LL(\theta) = \mathop{\arg\min}_{\theta} -\log P(Y|X) = \mathop{\arg\min}_{\theta} -\sum_{i=1}^{N}\log p_{\theta}(y_{i}|x_{i})$$

指数损失函数

提升方法的损失函数

  • 基本形式
    $$loss=L(y,f(x))=e^{-yf(x)}$$
  • 对应模型
    • 提升方法

0-1损失函数

最理想的损失函数,但是不光滑,不可导

  • 基本形式
    $$loss=L(y,f(x))=0, \text{if} \ yf(x)>0 \\
    loss=L(y,f(x))=1, \text{if} \ yf(x)<0$$
  • 在由 \(f(x)\) 符号判断样本的类别的二分类问题中
    • 分类正确时总有 \(yf(x)>0\),损失为0
    • 分类错误时总有 \(yf(x)<0\),损失为1
  • 在特定的模型中,比如要求 \(f(x)=y\) 才算正确分类的模型中
    • 0-1损失函数可定义为如下
      $$loss=L(y,f(x))=0, \text{if} \ y=f(x) \\
      loss=L(y,f(x))=1, \text{if} \ y\neq f(x)$$

合页损失函数(Hinge 损失函数)

支持向量机的损失函数

  • 一般基本形式为
    $$loss = L(y,f(x))=[1-yf(x)]_{+}$$
    • \([z]_{+}\) 表示
      • \(z>0\) 时取 \(z\)
      • \(z\leq 0\) 时取0
  • 也可以写作(按单样本写并展开取正符号):
    $$L(y_i, f(x_i)) = \max(0, 1 - y_i \cdot f(x_i))$$
  • 损失函数分析:
    • 当 \( y_i \cdot f(x_i) \geq 1 \) 时,损失为 0,说明样本被正确分类且与边界的距离足够大(满足间隔要求),无需惩罚了
    • 当 \( y_i \cdot f(x_i) < 1 \) 时,损失为 \( 1 - y_i \cdot f(x_i) \),说明样本分类错误或距离边界太近,需要惩罚
  • 对应模型
    • 支持向量机

感知机的损失函数

感知机特有的损失函数<<统计学习方法>>

  • 基本形式
    $$loss=L(y,f(x))=[-yf(x)]_{+}$$
  • 与合页损失函数对比
    • 相当于函数图像整体左移一个单位长度
    • 合页损失函数比感知机的损失函数对学习的要求更高
    • 这使得感知机对分类正确的样本就无法进一步优化(分类正确的样本损失函数为0),学到的分类面只要能对样本正确分类即可(不是最优的,而且随机梯度下降时从不同点出发会有不同结果)
    • 而SVM则需要学到最优的才行,因为即使分类正确的样本,依然会有一个较小的损失,此时为了最小化损失函数,需要不断寻找,直到分类面为最优的分类面位置
  • 对应模型
    • 感知机

感知损失函数

与感知机没有任何关系

  • 基本形式
    $$L(y,f(x))=1, \text{if} \ \left | y-f(x)\right |>t \\
    L(y,f(x))=0, \text{if} \ \left | y-f(x)\right |< t$$
  • 这里”感知”的意思是在一定范围内认为 \(y\approx f(x)\),满足小范围差距时,损失函数为0

Focal Loss

本文原文为: ICCV 2017: Focal Loss for Dense Object Detection

  • 主要是为了解决正负样本严重失衡的问题
  • 是交叉熵损失函数的一种改进
  • 回归交叉熵损失函数的表达式为:
    $$
    \begin{align}
    loss(x_i) &= -logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
  • Focal Loss的损失函数如下
    $$
    \begin{align}
    loss(x_i) &= -(1-y_i’)^\gamma logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -y_i^\gamma\log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
    • \(\gamma\) 的取值在原始论文中使用了 0, 0.5, 1, 2, 5 等
    • 当 \(\gamma > 0\) 时显然有
      • 预测值 \(y_i’\) 与真实标签 \(y_i\) 差异越大的样本,他们的损失权重越大( \(y_i=1\) 时,预测值和真实值的差异为 \(1-y_i’\), \(y_i=0\) 时,差异为 \(y_i’\) )
      • 预测值 \(y_i’\) 与真实标签 \(y_i\) 差异越小的样本,他们的损失权重越小
      • 以上两点给了模型重视分类错误样本的提示,模型会重视分类出错的样本
    • \(\gamma = 0\) 时Focal Loss退化为交叉熵损失函数
    • \(\gamma\) 越大,说明, 分类错误的样本占的损失比重越大
  • 实际使用中, 常加上 \(\alpha\) 平衡变量
    $$
    \begin{align}
    loss(x_i) &= -\alpha(1-y_i’)^\gamma logy_i’, &\quad y_i = 1 \\
    loss(x_i) &= -(1-\alpha)y_i^\gamma\log(1-y_i’), &\quad y_i = 0
    \end{align}
    $$
    • \(\alpha\) 用于平衡正负样本的重要性
    • \(\gamma\) 用于加强对难分类样本的重视程度
  • 假设正样本数量太少, 负样本数量太多, 那么该损失函数将降低负样本在训练中所占的权重, 可以理解为一种困难样本挖掘
    • 困难样本挖掘的思想就是找到分类错误的样本(难以分类的样本), 然后重点关注这些错误样本
  • 原论文中的实验结果:

Huber Loss

  • 总体来说:Huber损失函数是一种结合了均方误差(MSE)和平均绝对误差(MAE)优点的损失函数。它对小的残差表现得像MSE,对大的残差表现得更像MAE。这样可以减少异常值对模型的影响,同时保持梯度下降的有效性

  • Huber损失函数定义如下:
    $$ L_\delta(y, f(x)) = \begin{cases}
    \frac{1}{2}(y - f(x))^2 & \text{for } |y - f(x)| \leq \delta, \\
    \delta (|y - f(x)| - \frac{1}{2}\delta) & \text{otherwise}.
    \end{cases} $$

    • 其中 \(y\) 是目标变量, \(f(x)\) 是预测值,而 \(\delta\) 是一个超参数,用来控制从二次损失到线性损失转换的点
  • 在Python中实现Huber损失函数,可以使用如下的代码:

    1
    2
    3
    4
    5
    6
    7
    import numpy as np
    def huber_loss(y_true, y_pred, delta=1.0):
    residual = np.abs(y_true - y_pred)
    condition = residual <= delta
    small_res_loss = 0.5 * np.square(residual)
    large_res_loss = delta * (residual - 0.5 * delta)
    return np.where(condition, small_res_loss, large_res_loss)
  • 如果你使用的是深度学习框架比如TensorFlow或PyTorch,它们通常也内置了Huber损失函数,可以直接调用,例如在TensorFlow中:

    1
    2
    3
    import tensorflow as tf
    huber_loss_tf = tf.keras.losses.Huber(delta=1.0)
    loss_tf = huber_loss_tf(y_true_tf, y_pred_tf)
  • Huber Loss 也称为 Smooth_l1_loss

    • Smooth_l1_loss:它是一个“平滑”版本的L1损失,在误差较小时使用L2损失来提供平滑的梯度;相比于纯L1损失,smooth_l1_loss 在误差接近零时提供了更平滑的梯度变化,L1损失在误差为零时的梯度会发生突变(从-1变为1),而 smooth_l1_loss 使用平方误差部分避免了这种突变

岭回归

  • 基本思路是在最小二乘的基础上加上L2正则
    $$loss(\theta) = \frac{1}{m}\sum_{i=1}^{m}(y_{i} - f(x_{i}))^2 + \lambda \theta^2$$
  • 其中 \(\lambda \theta^2\) 项是L2正则项,也称为收缩惩罚项(shrinkage penalty)
    • 它试图缩小模型的参数,引入偏差来缓解参数估计中的方法问题,原始的最小二乘是无偏估计,但是引入了L2正则以后会变成有偏的,但是方差更小的参数估计
    • 实际上,shrinkage参数,也称为收缩参数 ,是统计学里面的一个概念,是用于缓解参数估计时离群点带来的问题

几个回归损失函数的对比

  • 参考链接补充:https://www.cnblogs.com/nxf-rabbit75/archive/2019/02/26/10440805.html

不同模型的损失函数

决策树的损失函数

  • 决策树有两个解释
    • if-then规则
    • 条件概率分布
  • <<统计学习方法>>: 决策树的损失函数是对数似然
    • 决策树可以看作是对不同概率空间的划分

Loss Function vs Cost Function

  • 损失函数(Loss Function)应用于一个特定的样本计算误差
  • 成本函数(Cost Function)是对所有样本而言的误差

损失函数相关思考

分类问题为什么不能用MSE?

  • 参考链接:
    • 为什么分类问题不使用MSE(平方损失函数)
    • 深究交叉熵损失(Cross-entropy)和平方损失(MSE)的区别
    • 为什么回归问题用MSE?
  • 原因:
    • 在sigmoid函数拟合概率的情况下,使用MSE会导致预估值接近0或者为1时的梯度都接近0,不利于模型学习收敛
    • 在sigmoid函数拟合概率的情况下,MSE是非凸优化问题,容易陷入局部最优;交叉熵损失则是凸优化问题,不会陷入局部最优
  • 最小化交叉熵损失函数等价于不做任何假设的极大似然估计 ,其本质是在最小化真实样本分布和预估分布的KL散度(这里的分布可以是已知X时,label的条件分布)
  • 最小化MSE损失函数等价于假设噪声服从高斯分布时的极大似然估计
    • 推导可参考:MSE的推导、MSE,MLE和高斯分布的关系、为什么回归问题用MSE?
    • 假设在回归问题中 \(y = z + \epsilon\),样本噪声 \(\epsilon\) 服从均值为0,方差为 \(\sigma\) 的高斯分布,即 \(\epsilon \sim N(0,\sigma)\),这里的 \(\sigma>0\)
    • 则有原始样本 \(y\) 服从均值为 \(z\) 方差为 \(\sigma\) 的高斯分布 \(y \sim N(z,\sigma)\),我们的目标是用模型拟合非噪声部分 \(y_{pred} = \theta^T x = z\),此时有 \(y = y_{pred} + \epsilon\),即 \(y\) 服从高斯分布 \(y \sim N(y_{pred},\sigma)\)
    • 正太分布的概率密度函数为 \(p(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-u)^2}{2\sigma^2}}\),则此时单个样本出现的概率为 \(\frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(y-\theta^T x)^2}{2\sigma^2}}\)
    • 用极大似然法估计参数 \(\theta\),即最大化多个样本的联合概率为:
      $$
      \begin{align}
      \theta^* &= \mathop{\arg\max}_\theta \prod_i \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(y^i-\theta^T x^i)^2}{2\sigma^2}} \\
      &= \mathop{\arg\max}_\theta \prod_i e^{-\frac{(y^i-\theta^T x^i)^2}{2\sigma^2}} &\quad —去掉与\theta无关的常数项 \\
      &= \mathop{\arg\max}_\theta \sum_i -\frac{(y^i-\theta^T x^i)^2}{2\sigma^2} &\quad —取对数 \\
      &= \mathop{\arg\max}_\theta \sum_i -(y^i-\theta^T x^i)^2 &\quad —继续去除常数项 \\
      &= \mathop{\arg\min}_\theta \sum_i (y^i-\theta^T x^i)^2 \\
      \end{align}
      $$
    • 即当假设噪声服从高斯分布时,用极大似然法估计参数与MSE损失函数得到的参数相同

MSE和RMSE对反向传播过程一样吗?

  • 答案是不一样
    • MSE的梯度是:
      $$ \nabla_{w} loss_{MSE} = \frac{1}{M}\sum_{i=1}^M 2(f_w(x_i)-y_i) \cdot \nabla_{w}f_w(x_i) $$
    • RMSE的梯度是:
      $$ \nabla_{w} loss_{RMSE} = \frac{1}{2} \left(\frac{1}{M}\sum_{i=1}^M (f_w(x_i)-y_i)^2\right)^{-\frac{1}{2}} \cdot \frac{1}{M}\sum_{i=1}^M 2(f_w(x_i)-y_i) \cdot \nabla_{w}f_w(x_i) $$
  • 由于两者的梯度不同,所以两者对参数的影响也不同,由于 \(\frac{1}{2} \left(\frac{1}{M}\sum_{i=1}^M (f_w(x_i)-y_i)^2\right)^{-\frac{1}{2}}\) 不是固定值,所以MSE和RMSE对梯度的影响也不是简单的固定倍数关系
    • 可以简单理解为:
      • RMSE的梯度相当于在MSE的基础上乘以 \(\frac{1}{2} \left(\frac{1}{M}\sum_{i=1}^M (f_w(x_i)-y_i)^2\right)^{-\frac{1}{2}}\),在不同的Batch中,该值不同,Loss越大,该值越大,Loss越小,该值越小
  • MSE是在假设误差服从均值为0的正太分布(即 \(\epsilon \sim N(0,\sigma)\) )的基础上基于极大似然法求得的目标函数
  • 在同一个Batch内来看,RMSE与MSE的目标实际上是完全一致的,即MSE最小时,RMSE也最小;但是从不同Batch之间来看,RMSE的梯度系数不同无法实现在所有训练集上MSE最小
    • 当所有数据只有一个Batch时,RMSE和MSE对梯度的影响是常数倍数关系(基于所有样本计算Loss得到的常数)
  • 为了实现多次采样Batch后实现MSE(满足极大似然法推导结果),一般常用MSE作为损失函数,而不是RMSE,RMSE更多是一个指标

ML——模型评估指标总结

各种模型评估指标总结,持续更新


分类模型

  • 参考:https://www.cnblogs.com/zongfa/p/9431807.html

Accuracy,准确率

  • 公式:$$ \text{Accuracy} = \frac{TP+TN}{TP+TN+FP+FN} $$
  • 直观,但不利于不平衡样本

Recall,召回率

  • 公式:$$ \text{Recall} = \frac{TP}{TP+FN} $$

Precision,精确率

  • 公式:$$ \text{Precision} = \frac{TP}{TP+FP} $$

F1 Score

  • 公式:$$ \text{F1 Score} = \frac{2 * \text{Precision} * \text{Recall}}{\text{Precision}+\text{Recall}} $$
  • 综合考虑模型”求精“和”求全“的能力
  • 关键词:F1-Score, F1 Score, F1 分数

AUC

  • 形式化定义:AUC是ROC曲线下方的面积,其中ROC曲线的横坐标是伪阳性率(也叫假正类率,False Positive Rate),纵坐标是真阳性率(真正类率,True Positive Rate)
  • 本质:任意取两个样本,一个正样本和一个负样本( \( \forall x^+, x^-\) ),模型预测正样本为正的概率分为 \(Score_\theta(y=1|x^+)\),模型预测正样本为正的概率分为 \(Score_\theta(y=1|x^-)\),则AUC为:
    $$ AUC_\theta = P(Score_\theta(y=1|x^+)>Score_\theta(y=1|x^-))$$
  • 真实实现时,可以统计所有正负样本对,若正样本预估值大于负样本,则累计分数+1,最后用累计分数除以所有可能的正负样本对数量
    $$ AUC_\theta = \frac{Count(S_+>S_-)}{Count(S_+) * Count(S_-)}$$
  • 具体代码实现:
    • 将样本按照预估分数倒序排列,从大到小
    • 定义四个变量:正样本总数 \(M\),负样本总数 \(N\),已访问负样本数量 \(X=0\),正样本大于负样本的样本对数量 \(Z=0\)
    • 依次访问所有样本:
      • 若为正样本,则 \(Z = Z + (N-X)\)
      • 若为负样本,则 \(X = X + 1\)
    • 最后计算: \(AUC = \frac{Z}{M * N}\)

回归模型

  • 参考:https://www.cnblogs.com/HuZihu/p/10300760.html
  • 参考:https://blog.csdn.net/guolindonggld/article/details/87856780

MSE

  • MSE (Mean Square Error,均方误差)
  • 也常用作损失函数
    $$\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2$$
    • \(n\):样本数量
    • \(y_i\):第 \(i\) 个样本的真实值
    • \(\hat{y}_i\):第 \(i\) 个样本的预测值

RMSE

  • RMSE (Root Mean Square Error,根均方误差)
    $$\text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$

MAE

  • MAE (Mean Absolute Error,平均绝对误差)
    $$\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|$$

MAPE

  • MAPE (Mean Absolute Percentage Error,平均绝对百分比误差)
    $$\text{MAPE} = \frac{1}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| \times 100%$$
    • 注:这个指标对分母要求很高,分母存在极小值时指标波动会非常大
      • 比如当 \(y_i=0\) 时,MAPE 无定义,这是其核心缺陷

SMAPE

  • SMAPE (Symmetric Mean Absolute Percentage Error,对称平均绝对百分比误差)
    $$\text{SMAPE} = \frac{1}{n} \sum_{i=1}^{n} \frac{|y_i - \hat{y}_i|}{\frac{1}{2}(|y_i| + |\hat{y}_i|)} \times 100%$$
    • 结果范围为 \([0, 200%]\)
  • SMAPE 也有简化版定义:分母直接用 \(|y_i| + |\hat{y}_i|\),此时公式为
    $$\text{SMAPE} = \frac{2}{n} \sum_{i=1}^{n} \frac{|y_i - \hat{y}_i|}{|y_i| + |\hat{y}_i|} \times 100%$$
    • 结果范围为 \([0, 100%]\)
  • 两种形式均常见,均被广泛使用,需根据场景选择

WMAPE

  • WMAPE (Weighted Mean Absolute Percentage Error,加权平均绝对百分比误差)
    $$\text{WMAPE} = \frac{\sum_{i=1}^{n} |y_i - \hat{y}_i|}{\sum_{i=1}^{n} |y_i|} \times 100%$$
  • WMAPE 也有按自定义权重 \(w_i\) 的通用形式:
    $$\text{WMAPE} = \frac{\sum_{i=1}^{n} w_i |y_i - \hat{y}_i|}{\sum_{i=1}^{n} w_i |y_i|} \times 100%$$
    • 默认权重 \(w_i=1\) 时退化为之前的公式
    • WMAPE 解决了 MAPE 中 \(y_i=0\) 无定义的问题
  • WMAPE 是 MAPE 的加权改进版,避免了分母为 0 的问题,更适合实际业务场景

排序模型

  • 参考:https://www.cnblogs.com/by-dream/p/9403984.html

DCG

  • DCG(Discounted Cumulative Gain,累计收益折扣)
  • 核心作用:衡量排序结果的质量,考虑位置对价值的衰减(越靠前的结果权重越高)
    $$\text{DCG}_p = \sum_{i=1}^{p} \frac{\text{rel}_i}{\log_2(i + 1)}$$
  • 等价形式(更常用,便于与 IDCG 对齐):
    $$\text{DCG}_p = \text{rel}_1 + \sum_{i=2}^{p} \frac{\text{rel}_i}{\log_2(i)}$$
    • \(p\): 排序结果的截断位置(如 Top-10 则 \(p=10\))
    • \(\text{rel}_i\): 第 \(i\) 个位置结果的相关性分数(通常为非负整数,如0=不相关、1=相关、2=高度相关)
    • \(\log_2(i+1)$/$\log_2(i)\): 位置折扣因子,体现“越靠前的结果越重要”的特性
  • 补充:DCG 还有另一种常见形式(引入指数缩放相关性):
    $$\text{DCG}_p = \sum_{i=1}^{p} \frac{2^{\text{rel}_i} - 1}{\log_2(i + 1)}$$
    • 该形式会放大高相关性结果的权重,适用于对“高度相关结果”更敏感的场景(如搜索排序)

NDCG

  • NDCG(Normalized Discounted Cumulative Gain,归一化累计收益折扣)
  • 核心作用:将 DCG 归一化到 [0,1] 区间,消除不同查询/任务间的结果尺度差异,便于跨场景比较
    $$\text{NDCG}_p = \frac{\text{DCG}_p}{\text{IDCG}_p}$$
    • \(\text{IDCG}_p\)(Ideal DCG,理想累计收益折扣):将所有结果按相关性从高到低完美排序后得到的 \(\text{DCG}_p\),即当前数据集下的最大可能 DCG 值,计算公式为:
      $$\text{IDCG}_p = \sum_{i=1}^{|REL_p|} \frac{\text{rel}^*_i}{\log_2(i + 1)} \quad (\text{或对应DCG的等价形式})$$
      • \(\text{rel}^*_i\) 为第 \(i\) 个位置的理想相关性分数,\(|REL_p|\) 为前 \(p\) 个位置中理想排序的结果数量
  • NDCG 的取值范围为 \([0,1]\): \(\text{NDCG}_p=1\) 表示排序结果完全理想,\(\text{NDCG}_p=0\) 表示排序结果完全无价值;
  • 当所有结果均无相关性(\(\text{rel}_i=0\))时,\(\text{DCG}_p=\text{IDCG}_p=0\),此时约定 \(\text{NDCG}_p=1\);
  • DCG/NDCG 是排序任务(如推荐系统、搜索引擎)的核心评估指标, \(p\) 的选择需贴合业务场景(如推荐系统常用 Top-5/Top-10,搜索常用 Top-20)

AP(Average Precision)与 MAP(Mean Average Precision)

  • AP 和 mAP 指标可参考:

校准模型

  • 参考:推荐系统(2)—— 评估指标
  • 参考:阿里妈妈展示广告预估校准技术演进之路

COPC

  • COPC(Click over Predicted Click)
    • COPC = 实际的点击率/模型预测的点击率
    • COPC 主要衡量model整体预估的偏高和偏低,同样越接近1越好,一般情况下在1附近波动
    • COPC 指标在展示广告上应用多一些

PCOC

  • PCOC(Predicted Click over Click)
    • PCOC = 模型预估的点击率/实际点击率,与COPC用途相同
    • COPC的倒数

PCOC指标是校准之后的点击率与后验点击率(近似真实概率)的比值,越接近于1,意味着在绝对值上越准确,大于1为高估,小于1为低估,是一种常用的高低估评价指标。但是PCOC存在一定局限性,举个例子:2万个样本,其中1万个样本的预估概率是0.2,后验概率是0.4,计算出PCOC是0.2/0.4=0.5,是显著低估的,另1万个样本PCOC是0.8/0.6= 1.3,明显是高估的。所以校准效果并不好,但是样本放一起看,校准后概率是(0.2+0.8)/2=0.5,后验概率是(0.4+0.6)/2=0.5,整体PCOC是1.0,表现完全正常。所以单一PCOC指标不能表征样本各维度下的校准水平。


净胜率模型

  • ANLP
    • 参考:论文《Scalable Bid Landscape Forecasting in Real-time Bidding》
    • 链接:https://arxiv.org/pdf/2001.06587.pdf

ML——直推式学习和归纳式学习

本文解释 直推式学习(Transductive Learning) 和 归纳式学习(Inductive Learning) 的区别


归纳式学习 (Inductive Learning)

  • 一句话定义 :通过训练数据学习一个通用的模型 ,然后将该模型应用于未知的测试数据
  • 目标 :从具体样本中归纳(名字来源)出一般规律,适用于任何未来的数据
  • 特点 :
    • 训练阶段和测试阶段是分开的
    • 模型在训练时不知道测试数据的具体情况
  • 典型场景 :大多数监督学习任务(如图像分类、文本分类等)
  • 核心特点 :训练时测试数据不可见

直推式学习 (Transductive Learning)

  • 一句话定义 :利用训练数据和特定的测试数据(未标注)共同学习,直接(名字来源)预测这些测试数据的标签
  • 目标 :针对当前已知的测试数据优化预测,而非构建通用模型
  • 特点 :
    • 训练时已知测试数据的特征(但无标签),利用这些信息优化预测
    • 模型仅适用于当前的测试数据,不能直接泛化到新数据
  • 典型场景 :半监督学习、图节点分类(如社交网络用户分类)
  • 核心特点 :训练时测试数据可见

附录:举例-垃圾邮件分类

  • 任务定义 :判断邮件是否为垃圾邮件

归纳式学习

  • 仅用已标注的训练数据(带“垃圾/正常”标签的邮件)训练一个模型(如SVM、神经网络)
  • 将模型应用于未来收到的任何新邮件

直推式学习

  • 同时利用已标注邮件和未标注邮件的特征分布(如词频、发件人)训练模型
  • 模型发现未标注邮件中某些特征与训练数据中的垃圾邮件相似,直接预测它们的标签
  • 特别说明 :模型针对这批特定的测试邮件优化 ,但不保证对新邮件的效果

为什么需要直推式学习?

  • 一般来说,大部分场景都使用归纳式学习即可
  • 当测试数据分布与训练数据分布不同时,直推式学习可以通过利用测试数据的特征分布提升当前任务的性能,但牺牲泛化性
  • 特别地,当训练数据和测试数据本身具有一定结构(如图数据、时空数据)时,直推式学习可以利用这些结构信息对无标签的测试数据做预测

Math——Jenson不等式


Jensen不等式定义

  • 詹森不等式(Jensen’s Inequality)是数学中,特别是概率论和凸分析中的一个重要结果。它描述了凸函数或凹函数在期望值上的性质
  • 对于一个实值的凸函数 \(f\) 和任意一组非负权重 \(\lambda_i\) (满足 \(\sum_{i=1}^{n} \lambda_i = 1\) ),以及对应的随机变量 \(X_i\) 的取值,詹森不等式可以表述为:
    • 如果 \(f\) 是一个凸函数,则有:
      $$ f\left( \sum_{i=1}^{n} \lambda_i X_i \right) \leq \sum_{i=1}^{n} \lambda_i f(X_i) $$
    • 如果 \(f\) 是一个凹函数,则不等号方向相反:
      $$ f\left( \sum_{i=1}^{n} \lambda_i X_i \right) \geq \sum_{i=1}^{n} \lambda_i f(X_i) $$
    • 特别注意:和中文字面意思相反,凸函数是个碗状,凹函数是个伞状

概率论中的Jenson不等式

  • 在概率论的上下文中,这可以被解释为:对于一个凸函数 \(f\) 和一个随机变量 \(X\),我们有:
    $$ f(E[X]) \leq E[f(X)] $$
  • 这里 \(E[\cdot]\) 表示期望值。同样地,对于凹函数,不等号的方向会反过来

Jenson不等式的简单推导

推导詹森不等式的简单方法:

  • 考虑最简单的情况,即当 \(n = 2\) 时,并且 \(\lambda_1 + \lambda_2 = 1\),不失一般性,假设 \(f\) 是一个凸函数。根据凸函数的定义,对于所有 \(0 \leq \lambda \leq 1\) 和任意两个点 \(x_1, x_2\),我们有:
    $$ f(\lambda x_1 + (1-\lambda) x_2) \leq \lambda f(x_1) + (1-\lambda) f(x_2) $$
  • 这个不等式就是詹森不等式在 \(n = 2\) 情况下的形式。为了推广到任意正整数 \(n\) 和任何权重 \(\lambda_i\),我们可以使用归纳法,或者利用凸组合的概念来证明
  • 对于更一般的随机变量 \(X\),通过积分的形式,也可以得到相同的结果。具体来说,设 \(P\) 是 \(X\) 的概率分布,那么对任意凸函数 \(f\),我们有:
    $$ f\left(\int X dP\right) \leq \int f(X) dP $$
  • 这是连续版本的詹森不等式,其中左边是对 \(X\) 的期望应用函数 \(f\),而右边是先对 \(X\) 应用 \(f\) 再求期望

Jenson不等式的使用

  • 经常在推导时,可以使用Jenson不等式来实现求和计算和函数的交换,比如在VAE变分下界推导时就是用到了Jenson不等式

Math——一些常见概率分布


二项分布(Binomial Distribution)

  • 二项分布 :是 \(p\) 次独立重复试验中成功的次数的离散概率分布,其中每次试验只有两种可能结果(成功或失败),成功概率为 \(p\) ,失败概率为 \(1-p\) ,其概率公式为:
    $$P(X = k)=C_{n}^{k}p^{k}(1 - p)^{n - k}$$
    • 其中 \(X\) 表示成功的次数, \(k\) 是具体的成功次数, \(C_{n}^{k}\) 是组合数
  • 举例 :如抛硬币 \(n\) 次,正面朝上的次数;多次独立射击,命中目标的次数等

多项分布(Multinomial Distribution)

  • 多项分布 :是二项分布的推广,用于描述在 \(n\) 次独立试验中,每次试验有 \(k\) 种互斥且完备的结果,每种结果出现的概率分别为 \(p_{1},p_{2},\cdots,p_{k}\) ,且 \(\sum_{i = 1}^{k}p_{i}=1\) ,其概率公式为:
    $$P(X_{1}=n_{1},X_{2}=n_{2},\cdots,X_{k}=n_{k})=\frac{n!}{n_{1}!n_{2}!\cdots n_{k}!}p_{1}^{n_{1}}p_{2}^{n_{2}}\cdots p_{k}^{n_{k}}$$
    • 其中 \(X_{i}\) 表示第 \(i\) 种结果出现的次数, \(n_{i}\) 是具体的次数, \(n=\sum_{i = 1}^{k}n_{i}\)
  • 举例 :如掷骰子多次,统计每个点数出现的次数;对人群进行分类调查,统计各类人群的数量等
  • 多项分布与二项分布的区别 :二项分布是针对只有两种结果的重复试验;多项分布是二项分布的推广,用于多种结果的重复试验

分类分布(Categorical Distribution)

  • 分类分布 :也叫范畴分布,是一种离散概率分布,用于描述一个随机变量在有限个类别中的取值概率。它是多项分布在 \(n = 1\) 时的特殊情况,其概率公式为:
    $$P(X = i)=p_{i}$$
    • 其中 \(X\) 表示随机变量, \(i\) 表示类别, \(p_{i}\) 是类别 \(i\) 出现的概率, \(\sum_{i = 1}^{k}p_{i}=1\)
  • 举例 :如一次抽奖,有多种奖品,抽到每种奖品的概率;对一个物体进行分类,它属于不同类别的概率等
  • 注:强化学习中,离散动作的分布常常使用分类分布来表示(部分文献也称RL中的离散动作分布为广义伯努利分布)

广义伯努利分布(Generalized Bernoulli Distribution)

  • 广义伯努利分布 :是伯努利分布的推广,允许试验结果有多种,且每种结果的概率可以不同。它将伯努利分布从两种结果扩展到了多种结果的情,其概率公式为:
    $$P(X = x_{i})=p_{i}$$
    • \(X\) 是取值于 \({x_{1},x_{2},\cdots,x_{k}}\) 的随机变量,\(i = 1,2,\cdots,k\) ,且 \(\sum_{i = 1}^{k}p_{i}=1\)
  • 举例 :在一些多结果的单次试验场景中,如一次考试学生的成绩等级(优、良、中、差等)的概率分布
  • 注:强化学习中,离散动作的分布常常使用分类分布来表示(部分文献也称RL中的离散动作分布为广义伯努利分布)

一些总结

  • 二项分布是针对只有两种结果的重复试验(每次实验只有两种结果);
  • 多项分布是二项分布的推广,用于多种结果的重复试验(每次实验有多种结果);
  • 分类分布是多项分布在单次试验下的特殊情况;
  • 广义伯努利分布也是对伯努利分布的推广,更侧重于单次试验有多种结果的情况,与分类分布类似,但表述上更强调对伯努利分布的扩展
    • 分类分布和广义伯努利分布形式相同,代码实现上也完全相同

Math——假设检验

本文介绍各种常见假设检验方法及使用示例

  • 参考链接1:知乎:T检验、F检验、卡方检验详细分析及应用场景总结
  • 参考链接2:知乎视频:5分钟带你了解卡方检验

卡方检验

《概率论与数理统计》

p-value的含义

  • 在假设检验中,对p-value的的一种直观理解:在假设 \(H_0\):假设目标样本属于某个正太分布,这个样本不是从这个正太分布中采样的概率就是p值(即p值的本质是一个概率)
    • 进一步的理解,已知一个正太分布和一个目标样本,那么这个目标样本对应的p值就是:重新在这个正太分布中重新采样一个新样本,新样本离中心位置 \(u_0\) 的距离大于等于目标样本的概率(该概率就是正太分布的两边区间积分和)
    • p值越小,说明这个目标样本越不可能是从这个正太分布采样出来的,越应该拒绝原假设 \(H_0\) (即越应该接受 \(H_A\)
1…404142…61
Joe Zhou

Joe Zhou

Stay Hungry. Stay Foolish.

608 posts
49 tags
GitHub E-Mail
© 2026 Joe Zhou
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4