ریاضی , علوم پایه 474 بازدید

نُرم (Norm) یکی از مفاهیم ریاضی است که کاربرد مهمی در زمینه‌های مختلف علوم و مهندسی دارد. یکی از کاربردهای مهم نرم در یادگیری‌ ماشین و یادگیری عمیق است. نرم عموماً برای ارزیابی خطای یک مدل مورد استفاده قرار می‌گیرد. علاوه بر این، نرم برای محاسبه خطای بین خروجی یک شبکه عصبی و آنچه مورد انتظار است (برچسب یا مقدار واقعی) نیز به کار می‌رود. نرم را می‌توان به عنوان طول یک بردار در نظر گرفت. این مفهوم، تابعی است که یک بردار را به یک مقدار مثبت می‌نگارد. از توابع مختلفی برای این نگاشت استفاده می‌شود که در ادامه، چند مورد از آن‌ها را بیان خواهیم کرد.

نرم چیست؟

نرم تابعی است که مشخصه‌های زیر را دارد:

  1. نرم‌ها مقادیری نامنفی هستند. اگر نرم‌ها را به عنوان طول در نظر بگیریم، می‌توان به سادگی دید که چرا نمی‌توانند منفی شوند.
  2. نرم‌ها صفر هستند، اگر و فقط اگر بردار صفر باشد.
  3. نرم‌ها از نامساوی مثلثی تبعیت می‌کنند.
  4. نرم یک بردار ضرب در یک اسکالر، برابر با ضرب قدر مطلق این اسکالر در نرم بردار است: $$ | | \mathbf{k\cdot u } || = |\mathbf { k } | \cdot || \mathbf{u} | | $$.

نرم $$ \mathbf { x } $$ را معمولاً با نماد $$ || \mathbf{x} || $$ نشان می‌دهند.

اما نامساوی مثلثی چیست؟ نامساوی مثلثی بیان می‌کند که نرم مجموع چند بردار، کوچک‌تر یا مساوی با مجموع نرم‌های این بردارها است.

$$ \large ||{ \mathbf { u } + \mathbf { v } } || \leq || { \mathbf { u } }|| + || { \mathbf { v } } || $$

مثال ۱

بردارهای $$ \mathbf { u } = \begin {bmatrix} 1 & 6 \end {bmatrix} $$ و $$ \mathbf { v } = \begin {bmatrix} 4 & 2 \end {bmatrix} $$ را در نظر بگیرید.

برای این دو بردار، داریم:

$$ \large || { \mathbf { u } + \mathbf { v } } || = \sqrt { ( 1 + 4 ) ^ 2 + ( 6 + 2 ) ^ 2 } = \sqrt { 8 9 } \approx 9 . 4 3 $$

$$ \large || { \mathbf { u } } || + || { \mathbf { v } } || = \sqrt { 1 ^ 2 + 6 ^ 2 } + \sqrt { 4 ^ 2 + 2^ 2 } = \sqrt { 3 7 } + \sqrt { 2 0 } \approx 1 0 . 5 5 $$

این نتایج را در پایتون نیز بررسی می‌کنیم:

array([1, 6])

array([4, 2])

array([5, 8])

9.4339811320566032

10.554898485297798

نمایش برداری نامساوی مثلثی
نمایش برداری نامساوی مثلثی

محاسبه نرم p

در این بخش، نحوه به دست آوردن نرم p بردار را بیان می‌کنیم. گام‌های محاسبه نرم p به صورت زیر است:

  1. قدر مطلق هر درایه را حساب کنید.
  2. مقادیر به دست آمده را به توان $$p$$ برسانید.
  3. همه قدر مطلق‌های به توان $$p$$ رسیده را با هم جمع کنید.
  4. نتیجه نهایی را به توان $$ 1 / p $$ برسانید.

موارد بالا را می‌توان با فرمول زیر بیان کرد:

$$ \large || { \mathbf { x } } || _ p = ( \sum _ i | \mathbf { x } _ i | ^ p ) ^ { 1 / p } $$

برای موارد گوناگون، نرم‌های مختلفی تعریف شده است که در ادامه، مهم‌ترین آن‌ها را بیان خواهیم کرد.

نرم $$ \Large L ^ 0 $$

اگر هر عددی را به توان $$0$$ برسانیم، حاصل آن برابر با $$ 1 $$ خواهد شد (به جز $$ 0 $$ که حاصل آن برابر با صفر است). بنابراین، حاصل این نرم، متناظر با تعداد عناصر غیرصفر در بردار است. البته این مورد، در واقع یک نرم نیست، زیرا اگر بردار را در $$ \alpha $$ ضرب کنیم، عدد تغییری نخواهد کرد (قانون ۴ بالا).

نرم $$ \Large L ^ 1 $$

اگر $$ p = 1 $$، آنگاه نرم برابر با مجموع قدر مطلق‌ها خواهد بود:

$$ \large || { \mathbf { x } } || _ 1 = \sum _ { i } | \mathbf { x } _ i | $$

نرم اقلیدسی (نرم $$ \Large L ^ 2 $$)

نرم اقلیدسی نرم $$p$$ با $$ p = 2 $$ است که به صورت زیر تعریف می‌شود:

$$ \large || { \mathbf { x } } || _ 2 = ( \sum _ i \mathbf { x } _ i ^ 2 ) ^ { 1 / 2 } \Leftrightarrow \sqrt { \sum _ i \mathbf { x } _ i ^ 2 } $$

مثالی از این نرم را بررسی می‌کنیم.

مثال ۲

از نظر گرافیکی، نرم اقلیدسی متناظر با طول بردار از مبداء به نقطه به دست آمده از تبدیل خطی است (مانند اعمال قضیه فیثاغورس).

$$ \large \mathbf { u } = \begin {bmatrix} 3 \\\\ 4 \end {bmatrix} $$

$$ \large \begin {align*} || { \mathbf { u } } || _ 2 & = \sqrt { | 3 | ^ 2 + | 4 | ^ 2 } \\\\ & = \sqrt { 2 5 } \\\\ & = 5 \end {align*} $$

بنابراین، نرم $$ L ^ 2 $$ برابر با $$ 5 $$ است.

نرم $$ L ^ 2 $$  را می‌توان با تابع “linalg.norm” در نام‌پای (NumPy) پایتون محاسبه کرد. می‌توانیم نتیجه را به صورت زیر بررسی کنیم:

5.0

کد زیر، نمایش گرافیکی بردارها را ارائه می‌کند:

بردارهای مثال ۲
بردارهای مثال ۲

در این حالت، بردار یک فضای دو بعدی است، اما می‌توان آن را برای ابعاد بزرگ‌تر نیز بیان کرد.

$$ \large u= \begin {bmatrix} u _ 1 \\\\ u _ 2 \\\\ \cdots \\\\ u _ n \end {bmatrix} $$

$$ \large | | u | | _ 2 = \sqrt { u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 } $$

نرم اقلیدسی مربعی

نرم اقلیدسی مربعی (Squared Euclidean Norm)، نرم مناسبی است، زیرا ریشه مربع را حذف می‌کند و مجموع ساده‌ای از هر کدام از مقدارهای مربع بردار است.

نرم اقلیدسی مربعی استفاده گسترده‌ای در یادگیری ماشین دارد، زیرا می‌توان آن را با عملگر برداری $$ \mathbf{x} ^ T \mathbf{x}$$ محاسبه کرد.

مثال ۳

محاسبات زیر، مربوط به نرم اقلیدسی مربعی است:

$$ \large \mathbf { x } = \begin {bmatrix} 2 \\\\ 5 \\\\ 3 \\\\ 3 \end {bmatrix} $$

$$ \large \mathbf { x } ^ \text {T} = \begin {bmatrix} 2 & 5 & 3 & 3 \end {bmatrix} $$

$$ \large \begin {align*} \mathbf { x } ^ \text {T} \mathbf { x } & = \begin {bmatrix} 2 & 5 & 3 & 3 \end {bmatrix} \times \begin {bmatrix} 2 \\\\ 5 \\\\ 3 \\\\ 3 \end {bmatrix} \\\\ & = 2 \times 2 + 5 \times 5 + 3 \times 3 + 3\times 3 = 47 \end {align*}$$

array([[2],
[5],
[3],
[3]])
array([[47]])
47.0

مشتق نرم $$ \Large L ^ 2 $$ مربعی

یک مزیت دیگر نرم $$ L^ 2 $$ مربعی این است که مشتق جزئی آن به سادگی محاسبه می‌شود:

$$ \large u = \begin {bmatrix} u _ 1 \\\\ u _ 2 \\\\ \cdots \\\\ u _ n \end {bmatrix} $$

$$ \large || { u } || _ 2 = u _1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 $$

$$ \large \begin {cases} \dfrac { d || { u }|| _ 2 } { d u _ 1 } = 2 u _ 1 \\\\ \dfrac { d || { u } || _ 2 } { d u _ 2 } = 2 u _ 2 \\\\ \cdots\\\\ \dfrac { d || { u } || _ 2 } { d u _ n } = 2 u _ n \end {cases} $$

مشتق نرم $$ \Large L ^ 2 $$

در حالتی که نرم $$ L ^ 2 $$ داریم، محاسبه مشتق دشوارتر است:

$$ \large || { u } || _ 2 = \sqrt { ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) } = ( u _ 1 ^ 2 +u _ 2 ^ 2+ \cdots + u _ n ^ 2 )^ { \frac { 1 } { 2 } } $$

$$ \large \begin {align*} \dfrac { d || { u } || _ 2 } { d u _ 1 } & = \dfrac { 1 } { 2 }( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) ^ { \frac { 1 } { 2 } – 1 } \cdot \dfrac { d } { d u _ 1 }( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _n ^ 2 ) \\\\ & = \dfrac { 1 } { 2} ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) ^ { – \frac { 1 } { 2 } } \cdot \dfrac { d } { d u _ 1 }( u _ 1 ^ 2+ u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) \\\\ & = \dfrac { 1 } { 2 } \cdot \dfrac { 1 } { ( u _ 1^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2) ^ { \frac { 1 } { 2 } } } \cdot \dfrac { d } { d u _ 1} ( u _ 1 ^ 2 +u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) \\\\ & = \dfrac { 1 } { 2 } \cdot \dfrac { 1 } { ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2) ^ { \frac { 1 } { 2 } } } \cdot 2 \cdot u _ 1 \\\\ & = \dfrac { u _ 1 } { \sqrt { ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) } } \\\\ \end {align*} $$

$$ \large \begin{cases} \dfrac { d || { u } || _ 2 } { d u _ 1 } = \dfrac { u _ 1 } { \sqrt { ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) } } \\\\ \dfrac { d || { u } || _ 2 } { d u _ 2 } = \dfrac { u _ 2 } { \sqrt { ( u _ 1 ^ 2 + u _ 2 ^ 2 + \cdots + u _ n ^ 2 ) } } \\\\ \cdots\\\\ \dfrac { d || { u } || _ 2 } { d u _ n } = \dfrac { u _ n } { \sqrt { ( u _ 1 ^ 2+ u _2 ^ 2 + \cdots + u _ n ^ 2 ) } } \\\\ \end {cases} $$

یکی از معایب نرم $$ L ^ 2 $$ مربعی این است که به سختی بین صفر و مقادیر کوچک تمایز قائل می‌شود، زیرا افزایش تابع آن کند است.

این مورد را می‌توان به صورت گرافیکی و از طریق مقایسه نرم $$ L ^ 2 $$ مربعی و نرم $$ L ^ 2 $$ مشاهده کرد. محور $$ z $$ متناظر با نرم و محورهای $$ x $$ و $$ y $$ متناظر با دو پارامتر هستند. همین مورد برای بیش از دو بعد نیز صدق می‌کند، اما نمایش بصری آن دشوار است.

شکل زیر نرم $$ L ^ 2 $$ را نشان می‌دهد.

نرم $$ L ^ 2 $$
نرم $$ L ^ 2 $$

نرم $$ L ^ 2 $$ مربعی نیز در شکل زیر نشان داده شده است.

نرم $$ L ^ 2 $$ مربعی
نرم $$ L ^ 2 $$ مربعی

و در نهایت، نرم $$ L ^ 1 $$ در شکل زیر به تصویر کشیده شده است.

نرم $$ L ^ 1 $$
نرم $$ L ^ 1 $$

نرم ماکزیمم

نرم ماکزیمم همان نرم $$ L ^ \infty $$ است و قدر مطلق بزرگ‌ترین درایه بردار را مشخص می‌کند.

$$ \large || { \mathbf { x } } || _ \infty = \max \limits _ i | x _ i | $$

نرم ماتریس: فرم فروبنیوس

معادله نرم $$ L ^ 2 $$ یک ماتریس به صورت زیر است:

$$ \large || { \mathbf { A } } || _ F = \sqrt { \sum _ { i , j } A ^ 2 _ { i , j } } $$

از تابع مشابهی برای بردار در نام‌پای می‌توان برای محاسبه نرم ماتریس استفاده کرد:

array([[1, 2],
[6, 4],
[3, 2]])

8.3666002653407556

توصیف ضرب نقطه‌ای با نرم‌ها

ضرب نقطه‌ای دو بردار به صورت زیر بیان می‌شود:

$$ \large \mathbf { x } ^ \text {T}\mathbf { y } = \||{ \mathbf { x } } || _ 2 \cdot || { \mathbf { y } } || _ 2 \cos \theta $$

مثال ۴

ضرب نقطه‌ای دو بردار $$ \mathbf { x } = \begin {bmatrix} 0 \\\\ 2 \end {bmatrix} $$ و $$ \mathbf { y } = \begin {bmatrix} 2 \\\\ 2 \end {bmatrix} $$  به صورت زیر است:

نرم ضرب نقطه‌ای
توصیف ضرب نقطه‌ای با نرم

در این مثال ساده می‌بینیم که زاویه $$ \theta $$ برابر با $$ 45 ^ \circ $$ است.

$$ \large \mathbf { x ^ \text {T} y } = \begin {bmatrix} 0 & 2 \end {bmatrix} \cdot \begin {bmatrix} 2 \\\\ 2 \end {bmatrix} = 0 \times 2 + 2 \times 2 = 4 $$

و

$$ \large || { \mathbf { x } }|| _ 2 = \sqrt { 0 ^ 2 + 2 ^ 2 } = \mathbf { 4 } = 2 $$

$$ \large || { \mathbf { y } } || _ 2 = \sqrt { 2 ^ 2 + 2 ^ 2} = \sqrt { 8 } $$

$$ \large 2 \times \sqrt { 8 } \times \cos ( 4 5 ^ \circ) = 4 $$

این محاسبات در نام‌پای به صورت زیر است:

4.0000000000000009

اگر علاقه‌مند به یادگیری مباحث مشابه مطلب بالا هستید، آموزش‌هایی که در ادامه آمده‌اند نیز به شما پیشنهاد می‌شوند:

^^

به عنوان حامی، استارتاپ، محصول و خدمات خود را در انتهای مطالب مرتبط مجله فرادرس معرفی کنید.

telegram
twitter

سید سراج حمیدی

«سید سراج حمیدی» دانش‌آموخته مهندسی برق است. فعالیت‌های کاری و پژوهشی او در زمینه سیستم‌های فتوولتائیک و کاربردهای کنترل در قدرت بوده و، در حال حاضر، آموزش‌های مهندسی برق و ریاضیات مجله فرادرس را می‌نویسد.

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *