常见范数介绍

article/2024/2/25 20:53:23

一、在线性代数中,符号 ( ||x|| ) 表示向量 ( x ) 的范数(Norm)。范数是一个将向量映射到非负值的函数,它衡量了向量的大小或长度。范数可以是多种类型,其中最常见的有:

  1. 欧几里得范数(L2范数): 对于一个实数或复数向量 ( x = (x_1, x_2, \ldots, x_n)),它的欧几里得范数定义为:||x||_2 = \sqrt{x_1^2 + x_2^2 + \ldots + x_n^2} 在二维空间中,欧几里得范数就是向量的长度,即从原点到向量所在点的距离。

  2. L1范数: ( L1 ) 范数是向量元素绝对值之和,即: ||x||_1 = |x_1| + |x_2| + \ldots + |x_n|它衡量了向量元素绝对值之和。

  3. 无穷范数(Infinity范数)( \infty ) 范数是向量元素绝对值中的最大值,即: ||x||_{\infty} = \max(|x_1|, |x_2|, \ldots, |x_n|) 它衡量了向量中最大的绝对值元素。

除了这些常见的范数之外,还有其他类型的范数,如 ( L_p ) 范数(( p ) 范数),其中 ( p \geq 1 )。范数的选择取决于具体的问题和应用场景。

因此,当看到符号 ( ||x|| ) 时,需要根据上下文来确定是哪种范数。通常情况下,若无特别说明,默认是指欧几里得范数(L2范数)。

对L2范数的求导:

假设有一个实数向量 ( \mathbf{x} = (x_1, x_2, \ldots, x_n) ),它的L2范数(欧几里得范数)定义为:

 ||\mathbf{x}||_2 = \sqrt{x_1^2 + x_2^2 + \ldots + x_n^2} 

如果要对 ( ||\mathbf{x}||_2) 求导数,我们首先定义一个辅助函数:

f(\mathbf{x}) = \sqrt{x_1^2 + x_2^2 + \ldots + x_n^2} 

然后,我们对( f(\mathbf{x}) ) 中的每个分量 ( x_i ) 分别求偏导数。注意到( f(\mathbf{x}) )是一个复合函数,因此我们需要使用链式法则。

对于第 ( i ) 个分量 (x_i),链式法则给出:

 \frac{\partial f}{\partial x_i} = \frac{1}{2\sqrt{x_1^2 + x_2^2 + \ldots + x_n^2}} \cdot 2x_i = \frac{x_i}{\sqrt{x_1^2 + x_2^2 + \ldots + x_n^2}}

用更紧凑的矩阵形式表示:

 \nabla f(\mathbf{x}) = \frac{1}{||\mathbf{x}||_2} \cdot \mathbf{x} 

这是L2范数关于向量 (\mathbf{x}) 的梯度。

对L2范数的的平方的求导:

||\mathbf{x}||_2^2 = (\sqrt{x_1^2 + x_2^2 + \ldots + x_n^2})^2 = x_1^2 + x_2^2 + \ldots + x_n^2 

现在,我们可以对每个分量 (x_i) 求导数。因为每个 (x_i) 项与其他项无关,所以对每个 ( x_i) 求导相当于对 (x_i^2 ) 求导,即:

\frac{\partial ||\mathbf{x}||_2^2}{\partial x_i} = \frac{\partial (x_1^2 + x_2^2 + \ldots + x_n^2)}{\partial x_i} = 2x_i 

所以,整体的梯度向量是:

\nabla ||\mathbf{x}||_2^2 = \left(2x_1, 2x_2, \ldots, 2x_n\right) 

或者用更紧凑的矩阵形式表示:

\nabla ||\mathbf{x}||_2^2 = 2\mathbf{x} 

这是L2范数的平方关于向量 ( \mathbf{x} ) 的梯度。


http://www.ngui.cc/article/show-1899209.html

相关文章

读书笔记:《人件:PeopleWare》

人力资源 人无法作为固定模块来管理。只有从事基础研究的科研人员才是高科技工作者,普通程序员只是运用研究成果,解决社会问题,而非技术问题。程序员习惯性关注于技术问题,是因为技术问题比社会问题更简单。管理者不喜欢员工的独…

Python学习之路-爬虫提高:selenium

Python学习之路-爬虫提高:selenium 什么是selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器&#xff09…

坚持刷题|重建二叉树

文章目录 题目考察点代码实现实现总结扩展问题从前序和中序遍历中序列构建二叉树题目代码实现与后序实现的异同点 前序和后序可不可以唯一确定一棵二叉树呢? Hello,大家好,我是阿月。坚持刷题,老年痴呆追不上我,今天刷…

AtCoder Beginner Contest 340 C - Divide and Divide【打表推公式】

原题链接:https://atcoder.jp/contests/abc340/tasks/abc340_c Time Limit: 2 sec / Memory Limit: 1024 MB Score: 300 points 问题陈述 黑板上写着一个整数 N。 高桥将重复下面的一系列操作,直到所有不小于2的整数都从黑板上移除: 选择…

浅析Linux追踪技术之ftrace:Event Tracing

文章目录 概述使用Event Tracing使用set_event接口使用enable接口 Event配置Event formatEvent Filtering过滤规则设置过滤器 Event TriggerTrigger语法 Trace marker相关参考 概述 Event Tracing(事件追踪)利用在内核代码中加入的各种Tracepoint&#…

C++ 堆排序

C 堆排序 堆排序是一种基于二叉堆数据结构的排序算法,其原理如下: 构建最大堆:将待排序的数组看作一个完全二叉树,并通过调整节点的位置构建一个最大堆。最大堆满足每个父节点的值都大于或等于其子节点的值。构建最大堆的过程可以…

猫头虎分享:Win11系统家庭版组策略编辑器怎么打开? Windows11家庭版没有gpedit.msc如何解决?

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

智胜未来,新时代IT技术人风口攻略-第一版(弃稿)

文章目录 抛砖引玉 鸿蒙生态小科普焦虑之下 理想要落到实处校园鼎力 鸿蒙发展不可挡培训入场 机构急于吃红利企业布局 鸿蒙应用规划动智胜未来 技术人风口来临 鸿蒙已经成为行业的焦点,未来的发展潜力无限。作为一名程序员兼UP主,我非常荣幸地接受了邀请…

Android 10.0 锁屏壁纸 LockscreenWallpaper

前言 一、设置壁纸 通过系统设置进行锁屏壁纸和桌面壁纸的设置。 Setting 部分的代码: packages/apps/WallpaperPicker2/src/com/android/wallpaper/module/DefaultWallpaperPersister.java private int setStreamToWallpaperManagerCompat(InputStream inputStre…

算法-3-基本的数据结构

单双链表 1.单链表双链表如何反转 import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {public int…