COVER_compressed

بایاس در شبکه عصبی چیست و چگونه رفتار نورون مصنوعی را تغییر می‌دهد؟

1. بایاس: چگونه یک پارامتر ثابت، رفتار نورون مصنوعی را تغییر می‌دهد؟

در بخش قبلی، وزن‌ها را به‌عنوان یکی از اجزای بنیادی نورون مصنوعی بررسی کردیم. آموختیم که هر وزن، میزان و جهت تأثیر ورودی متناظر خود را بر مجموع وزن‌دار تعیین می‌کند. همچنین دریافتیم که وزن‌ها علاوه بر نقش محاسباتی، دارای تفسیر هندسی هستند و بردار وزن می‌تواند جهت مجموعه نقاط دارای امتیاز ثابت را مشخص کند.

با وجود این قابلیت‌ها، مدلی که تنها از مجموع وزن‌دار ورودی‌ها استفاده می‌کند، محدودیتی اساسی دارد: اگر تمام ورودی‌ها صفر باشند، خروجی بخش خطی آن نیز الزاماً صفر خواهد بود. همچنین مجموعه نقاطی که مجموع وزن‌دار آن‌ها صفر است، برای بردار وزن غیرصفر، همواره از مبدأ مختصات عبور می‌کند.

در بسیاری از مسائل، چنین محدودیتی مطلوب نیست.

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

برای حل این مسئله به پارامتری نیاز داریم که مقدار محاسبه را بدون تغییر وزن ورودی جابه‌جا کند.

این پارامتر بایاس (Bias) نام دارد.

بایاس در کنار وزن‌ها، ساختار اصلی تبدیل آفین (Affine Transformation) را در یک نورون مصنوعی تشکیل می‌دهد. این مفهوم در شبکه‌های عصبی، رگرسیون خطی، طبقه‌بندی، هندسه مرز تصمیم و بسیاری از مدل‌های یادگیری ماشین نقش مهمی دارد (Bishop, 2006; Goodfellow et al., 2016).

هدف این بخش آن است که خواننده نه‌فقط بتواند بایاس را در یک فرمول قرار دهد، بلکه درک کند چرا به آن نیاز داریم، چگونه بر محاسبه و تصمیم اثر می‌گذارد، چه تفاوتی با وزن دارد و تحت چه شرایطی می‌توان آن را حذف یا به شکل دیگری نمایش داد.

1.۱. چرا وزن‌ها به‌تنهایی برای مدل‌سازی بسیاری از تصمیم‌ها کافی نیستند؟

برای درک مسئله، ابتدا ساده‌ترین نورون ممکن را در نظر می‌گیریم: نورونی با یک ورودی عددی و یک وزن.

فرض کنید ورودی با (x) و وزن با (w) نشان داده شود. مجموع وزن‌دار این نورون برابر است با:

s=wxs=wx

این رابطه از نظر ریاضی یک تابع خطی یک‌متغیره است. اگر وزن برابر ۲ باشد، خواهیم داشت:

s=2xs=2x

برای چند مقدار ورودی می‌توان خروجی‌های زیر را محاسبه کرد:

ورودی (x)وزن (w)مجموع وزن‌دار (s)
۳−۲۶−
۱−۲۲−
۰۲۰
۱۲۲
۳۲۶

جدول 1.۱ — رفتار یک نورون تک‌ورودی بدون بایاس

همان‌طور که از جدول 1.۱ مشخص است، وقتی ورودی صفر باشد، خروجی بخش خطی نیز صفر است.

این نتیجه به انتخاب وزن ۲ وابسته نیست. اگر وزن را به ۵، ۱۰، ۰٫۵ یا حتی عددی منفی تغییر دهیم، همچنان برای (x=0) خواهیم داشت:

s=w(0)=0s=w(0)=0

بنابراین، هر تابعی با ساختار (s=wx)  از نقطه ((0,0))  عبور می‌کند.

این خاصیت از نظر ریاضی کاملاً مشخص است، اما ممکن است با رابطه‌ای که قصد مدل‌سازی آن را داریم سازگار نباشد.

1.۱.۱. مسئله مقدار پایه

فرض کنید هدف ما محاسبه هزینه یک خدمت باشد. هزینه کل شامل یک مبلغ ثابت اولیه و هزینه‌ای متناسب با میزان استفاده است.

برای مثال، اگر هزینه ثابت خدمت ۵۰ واحد پولی و هزینه هر واحد استفاده ۱۰ واحد باشد، رابطه هزینه چنین خواهد بود:

C=10x+50C=10x+50

در این رابطه، (x) میزان استفاده و (C) هزینه کل است.

اگر فقط از رابطه (C=wx) استفاده کنیم، نمی‌توانیم هزینه ثابت ۵۰ واحدی را نمایش دهیم. زیرا وقتی (x=0) باشد، هر مقدار ثابتی برای (w) انتخاب کنیم، هزینه محاسبه‌شده صفر خواهد بود.

برای مدل‌سازی چنین مسئله‌ای باید جمله ثابتی به رابطه اضافه شود:

C=wx+bC=wx+b

در این مثال، (w=10) و (b=50) است.

این مثال، مفهوم بایاس را بدون نیاز به شبکه عصبی روشن می‌کند. بایاس یک مقدار مستقل از ورودی است که اجازه می‌دهد خروجی مدل حتی در ورودی صفر نیز مقدار غیرصفر داشته باشد.

البته در برخی مسائل، مقدار صفر ورودی الزاماً معنای فیزیکی «نبود فعالیت» ندارد. به‌ویژه اگر ویژگی‌ها استانداردسازی یا مرکزدهی شده باشند، صفر ممکن است نماینده میانگین داده‌ها باشد. بنابراین، تفسیر بایاس همواره باید متناسب با تعریف ورودی‌ها انجام شود.

1.۲. تعریف ریاضی بایاس و تفاوت آن با وزن

در یک نورون مصنوعی با (d) ورودی، ابتدا هر ورودی در وزن متناظر آن ضرب می‌شود. سپس حاصل‌ضرب‌ها با یکدیگر جمع می‌شوند و مقدار ثابت بایاس به آن‌ها افزوده می‌شود.

رابطه کامل این محاسبه به شکل زیر است:

z=∑i=1dwixi+b(5.1)\begin{equation} \boxed{z=\sum_{i=1}^{d}w_ix_i+b} \tag{5.1} \end{equation}

معادله 1.۱ — محاسبه مقدار پیش‌فعال‌سازی نورون با استفاده از وزن‌ها و بایاس

در این معادله، (d) تعداد ورودی‌ها، (xi) ویژگی شماره (i)، (wi) وزن متناظر، (b) بایاس و (z) مقدار پیش‌فعال‌سازی (Pre-activation) است.

مقدار (z) هنوز خروجی نهایی یک نورون دارای تابع فعال‌سازی نیست. این مقدار در بخش های بعدی به یک تابع فعال‌سازی ارائه خواهد شد تا خروجی نهایی محاسبه شود.

با استفاده از قرارداد برداری بخش چهارم، معادله 1.۱ را می‌توان چنین نوشت:

z=𝐰T𝐱+b(1.2)\begin{equation} \boxed{z=\mathbf{w}^{T}\mathbf{x}+b} \tag{1.2} \end{equation}

در این رابطه، بردار ورودی 𝐱 و بردار وزن 𝐰 هر دو دارای d مؤلفه هستند، درحالی‌که بایاس یک اسکالر است.

از نظر ابعاد:

𝐱∈ℝd,𝐰∈ℝd,b,z∈ℝ\mathbf{x}\in\mathbb{R}^{d},\qquad \mathbf{w}\in\mathbb{R}^{d},\qquad b,z\in\mathbb{R}

این شکل از محاسبه، یک تابع آفین از بردار ورودی است. در اصطلاح دقیق جبر خطی، تابع 𝐰^T 𝐱 خطی است، اما تابع 𝐰^T 𝐱 + b برای b ≠ ۰ به‌طور کلی آفین محسوب می‌شود.

در متون یادگیری ماشین گاهی عبارت «مدل خطی» برای مدل‌هایی شامل بایاس نیز استفاده می‌شود؛ بااین‌حال، تمایز ریاضی میان تبدیل خطی و آفین باید روشن باشد (Deisenroth et al., 2020).

1.۲.۱. وزن و بایاس دو نقش متفاوت دارند

فرض کنید نورونی دو ورودی داشته باشد:

z=w1x1+w2x2+bz=w_1x_1+w_2x_2+b

اگر وزن اول تغییر کند، اثر آن به مقدار (x1) وابسته خواهد بود. اگر وزن دوم تغییر کند، اثر آن به مقدار (x2) وابسته است.

اما تغییر بایاس، مستقل از مقدار ورودی‌ها، مقدار (z) را به همان اندازه جابه‌جا می‌کند.

برای مثال، اگر بایاس ۲ واحد افزایش یابد، مقدار پیش‌فعال‌سازی برای تمام نمونه‌ها دقیقاً ۲ واحد افزایش خواهد یافت؛ مشروط بر اینکه وزن‌ها و ورودی‌ها ثابت بمانند.

این ویژگی را می‌توان به‌صورت زیر بیان کرد:

Δz=Δb(1.3)\begin{equation} \boxed{\Delta z=\Delta b} \tag{1.3} \end{equation}

در معادله 1.۳، (Δb) تغییر بایاس و (Δz) تغییر متناظر مقدار پیش‌فعال‌سازی است.

تفاوت اثر تغییر وزن و بایاس را می‌توان در جدول 1.۲ مشاهده کرد.

ویژگیوزن (wi)بایاس (b)
تعداد در یک نورون معمولییک وزن برای هر ورودیمعمولاً یک مقدار
وابستگی اثر به ورودیوابسته به (xi)مستقل از مقدار ورودی
تأثیر هندسیمی‌تواند جهت مرز را تغییر دهدبا وزن ثابت، مرز را جابه‌جا می‌کند
تغییر مقدار پیش‌فعال‌سازی(Δ z=xiΔ wi)(Δz=Δb)
قابلیت تنظیممعمولاً داردمعمولاً دارد

جدول 1.۲ — مقایسه نقش محاسباتی و هندسی وزن و بایاس در یک نورون آفین

در این جدول، منظور از اثر هندسی، رفتار مجموعه نقاطی است که مقدار پیش‌فعال‌سازی یکسانی دارند. بررسی تفصیلی این مفهوم در بخش‌های بعد ارائه می‌شود.

1.۲.۲. مثال عددی: تغییر بایاس بدون تغییر وزن‌ها

یک نورون سه‌ورودی را در نظر بگیرید:

𝐱=[231],𝐰=[1−24]\mathbf{x}= \begin{bmatrix} 2\\ 3\\ 1 \end{bmatrix} ,\qquad \mathbf{w}= \begin{bmatrix} 1\\ -2\\ 4 \end{bmatrix}

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

s=1(2)−2(3)+4(1)=0s=1(2)-2(3)+4(1)=0

اکنون بایاس‌های مختلف را بررسی می‌کنیم.

بایاسمجموع وزن‌دارپیش‌فعال‌سازی (z)
۳−۰۳−
۱−۰۱−
۰۰۰
۲۰۲
۵۰۵

جدول 1.۳ — اثر تغییر بایاس بر مقدار پیش‌فعال‌سازی با ورودی و وزن ثابت

این جدول نشان می‌دهد که بایاس می‌تواند بدون هیچ تغییری در ورودی‌ها یا وزن‌ها، مقدار پیش‌فعال‌سازی را تعیین کند.

البته بایاس به‌تنهایی جایگزین وزن‌ها نیست. اگر همه وزن‌ها صفر باشند، مقدار پیش‌فعال‌سازی برای تمام نمونه‌ها برابر بایاس خواهد بود و دیگر به ورودی‌ها وابسته نیست.

در چنین شرایطی، نورون نمی‌تواند میان نمونه‌هایی که فقط از نظر ورودی متفاوت هستند، تمایز عددی ایجاد کند.

مثال تکمیلی : تعیین بایاس مجهول با استفاده از یک شرط عملکردی

صورت مسئله

یک مرکز خدماتی از مدل عددی ساده‌ای برای تعیین امتیاز اولویت درخواست‌ها استفاده می‌کند. دو ویژگی هر درخواست عبارت‌اند از میزان فوریت (x1) و مدت انتظار (x2). هر دو ویژگی در مقیاس صفر تا ده تعریف شده‌اند.

مدل اولیه چنین است:

z=3x1+2x2+bz=3x_1+2x_2+b

وزن‌ها از قبل مشخص شده‌اند و قرار نیست تغییر کنند. مدیر مرکز می‌خواهد درخواست با فوریت ۴ و مدت انتظار ۳ دقیقاً امتیاز ۲۰ بگیرد.

الف) بایاس مناسب را محاسبه کنید.

ب) امتیاز درخواست دیگری با (x1=2) و (x2=5) را به دست آورید.

ج) بررسی کنید اگر بایاس سه واحد افزایش یابد، اختلاف امتیاز دو درخواست چه تغییری می‌کند.

حل مرحله‌به‌مرحله

ابتدا داده‌های درخواست اول را در معادله قرار می‌دهیم:

20=3(4)+2(3)+b20=18+b⇒b=2\begin{aligned} 20&=3(4)+2(3)+b\\ 20&=18+b\quad\Rightarrow\quad \boxed{b=2} \end{aligned}

بنابراین مدل موردنظر عبارت است از:

z=3x1+2x2+2z=3x_1+2x_2+2

برای درخواست دوم:

z2=3(2)+2(5)+2=18z_2=3(2)+2(5)+2=18

امتیاز درخواست اول ۲۰ و درخواست دوم ۱۸ است. در نتیجه، اختلاف آن‌ها دو واحد خواهد بود.

اکنون بایاس را از ۲ به ۵ افزایش می‌دهیم:

z1′=12+6+5=23z2′=6+10+5=21\begin{aligned} z’_1&=12+6+5=23\\ z’_2&=6+10+5=21 \end{aligned}

اختلاف همچنان برابر دو واحد است.

تفسیر آموزشی

بایاس سطح پایه امتیاز همه درخواست‌ها را به‌اندازه یکسان تغییر می‌دهد؛ بنابراین، با ثابت ماندن وزن‌ها، اختلاف امتیاز دو نمونه تحت تأثیر تغییر بایاس قرار نمی‌گیرد.

این نتیجه را می‌توان به‌صورت عمومی نوشت:

zA−zB=𝐰T(𝐱A−𝐱B)z_A-z_B=\mathbf{w}^{T}(\mathbf{x}_A-\mathbf{x}_B)

بایاس در تفاضل حذف می‌شود.

پرسش تحلیلی: آیا افزایش بایاس می‌تواند ترتیب رتبه‌بندی این دو درخواست را تغییر دهد؟ چرا؟

پاسخ: خیر؛ تا زمانی که وزن‌ها و ویژگی‌ها ثابت باشند، افزایش یکسان امتیازها ترتیب آن‌ها را تغییر نمی‌دهد.

1.۳. بایاس و آستانه تصمیم: دو نمایش از یک ایده

یکی از کاربردهای مهم بایاس، تعیین محل آستانه تصمیم در یک نورون آستانه‌ای است.

برای فهم این ارتباط، ابتدا مدل زیر را در نظر می‌گیریم:

s=𝐰T𝐱s=\mathbf{w}^{T}\mathbf{x}

فرض کنید تصمیم نورون چنین تعریف شده باشد: اگر (s) دست‌کم برابر آستانه (θ) باشد، خروجی یک تولید شود؛ در غیر این صورت خروجی صفر خواهد بود.

این قانون را می‌توان به شکل زیر نوشت:

y^={1𝐰T𝐱≥θ0𝐰T𝐱<θ(1.4)\begin{equation} \hat{y}= \begin{cases} 1 & \mathbf{w}^{T}\mathbf{x}\geq\theta\\ 0 & \mathbf{w}^{T}\mathbf{x}<\theta \end{cases} \tag{1.4} \end{equation}

در این رابطه، ŷ خروجی دودویی پیش‌بینی‌شده و θ آستانه تصمیم است.

می‌توان شرط نخست را به شکل معادل نوشت:

𝐰T𝐱−θ≥0\mathbf{w}^{T}\mathbf{x}-\theta\geq0

اگر بایاس را برابر منفی آستانه قرار دهیم:

b=−θ(1.5)\begin{equation} \boxed{b=-\theta} \tag{1.5} \end{equation}

آنگاه قانون تصمیم به شکل زیر تبدیل می‌شود:

y^={1𝐰T𝐱+b≥00𝐰T𝐱+b<0(1.6)\begin{equation} \hat{y}= \begin{cases} 1 & \mathbf{w}^{T}\mathbf{x}+b\geq0\\ 0 & \mathbf{w}^{T}\mathbf{x}+b<0 \end{cases} \tag{1.6} \end{equation}

این دو نمایش، در شرایط تعریف‌شده، از نظر تصمیم‌گیری معادل‌اند.

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

این معادل‌سازی مشروط به قرارداد تابع تصمیم است. برای مثال، اگر قاعده تساوی در آستانه تغییر کند، باید همین قرارداد در نمایش بایاس‌دار نیز حفظ شود.

مثال : طراحی هشدار دما

به مسئله آغاز بخش بازمی‌گردیم. می‌خواهیم سامانه‌ای طراحی کنیم که اگر دمای دستگاه دست‌کم ۷۰ درجه سلسیوس باشد، خروجی هشدار برابر یک شود.

فرض می‌کنیم ورودی (x) همان دمای اندازه‌گیری‌شده و وزن برابر یک باشد.

قانون تصمیم مطلوب چنین است:

y^={1x≥700x<70\hat{y}= \begin{cases} 1 & x\geq70\\ 0 & x<70 \end{cases}

برای تبدیل آن به فرم بایاس‌دار کافی است مقدار (b=-70) انتخاب شود:

z=x−70z=x-70

سپس خروجی برابر یک خواهد بود اگر z ≥ ۰.

دمامقدار (z=x-70)خروجی هشدار
۵۵۱۵−۰
۶۵۵−۰
۶۹۱−۰
۷۰۰۱
۷۵۵۱
۸۵۱۵۱

جدول 1.۴ — پیاده‌سازی یک آستانه دمایی با استفاده از بایاس

در این مثال، بایاس باعث می‌شود شرط تصمیم از آستانه صفر در فضای دمای خام، به آستانه مطلوب ۷۰ درجه منتقل شود.

اگر به‌جای بایاس ۷۰− مقدار ۸۰− انتخاب کنیم، آستانه هشدار به ۸۰ درجه تغییر خواهد کرد.

این مثال صرفاً برای آموزش رابطه میان آستانه و بایاس طراحی شده است. مقدار دمای هشدار در تجهیزات واقعی باید بر اساس مشخصات فنی و الزامات ایمنی همان دستگاه تعیین شود.

مثال ـ بررسی تغییر تصمیم چند نمونه با تنظیم بایاس

صورت مسئله

یک سامانه فرضی، درخواست‌ها را بر اساس دو ویژگی عددی بررسی می‌کند:

  • (x1): امتیاز اهمیت درخواست
  • (x2): امتیاز آمادگی انجام درخواست

قانون محاسبه چنین است:

z=2x1+x2+bz=2x_1+x_2+b

اگر z ≥ ۰ باشد، درخواست وارد مرحله بررسی می‌شود و خروجی یک خواهد بود؛ در غیر این صورت خروجی صفر است.

چهار درخواست زیر را در نظر بگیرید:

درخواست(x1)(x2)
A۲۳
B۴۱
C۱۲
D۳۴

می‌خواهیم تأثیر سه بایاس (b=-5,-7,-9) را مقایسه کنیم.

حل

ابتدا مجموع وزن‌دار بدون بایاس را برای هر درخواست محاسبه می‌کنیم:

sA=2(2)+3=7sB=2(4)+1=9sC=2(1)+2=4sD=2(3)+4=10\begin{aligned} s_A&=2(2)+3=7\\ s_B&=2(4)+1=9\\ s_C&=2(1)+2=4\\ s_D&=2(3)+4=10 \end{aligned}

سپس برای هر بایاس، مقدار پیش‌فعال‌سازی و تصمیم را محاسبه می‌کنیم.

درخواست(s)(b=-5)(b=-7)(b=-9)
A۷۲ ← ۱۰ ← ۱۲− ← ۰
B۹۴ ← ۱۲ ← ۱۰ ← ۱
C۴۱− ← ۰۳− ← ۰۵− ← ۰
D۱۰۵ ← ۱۳ ← ۱۱ ← ۱

در هر خانه، عدد اول پیش‌فعال‌سازی و عدد دوم خروجی دودویی است.

تحلیل

با کاهش بایاس از ۵− به ۹−، امتیاز همه درخواست‌ها چهار واحد کاهش پیدا می‌کند. بااین‌حال، فقط درخواست A تصمیم متفاوتی دریافت می‌کند.

این موضوع نشان می‌دهد که تغییر مقدار پیش‌فعال‌سازی لزوماً به معنای تغییر خروجی دودویی نیست.

درخواست B در بایاس ۹− دقیقاً روی مرز قرار دارد. چون قرارداد تصمیم z ≥ ۰ است، خروجی آن یک باقی می‌ماند.

پرسش امتحانی: اگر بخواهیم فقط درخواست‌های B و D خروجی یک داشته باشند، بایاس باید در چه بازه‌ای باشد؟

برای رد درخواست A باید:

7+b<0⇒b<−77+b<0\Rightarrow b<-7

برای پذیرش B باید:

9+b≥0⇒b≥−99+b\geq 0\Rightarrow b\geq-9

در نتیجه:

−9≤b<−7\boxed{-9\leq b<-7}

این بازه، شرط مطلوب را برای چهار درخواست برقرار می‌کند.

1.۴. تفسیر هندسی بایاس در یک نورون تک‌ورودی

برای فهم هندسی بایاس، تابع آفین یک‌متغیره را در نظر می‌گیریم:

z=wx+bz=wx+b

در فضای دوبعدی، که محور افقی (x) و محور عمودی (z) است، این معادله یک خط را نمایش می‌دهد.

وزن (w) شیب خط را تعیین می‌کند و بایاس (b) محل تقاطع آن با محور عمودی را مشخص می‌سازد.

برای مثال، سه تابع زیر را در نظر بگیرید:

z1=2x−3z2=2xz3=2x+3\begin{aligned} z_1&=2x-3\\ z_2&=2x\\ z_3&=2x+3 \end{aligned}

هر سه تابع شیب یکسانی دارند، زیرا وزن آن‌ها برابر ۲ است. تنها تفاوت آن‌ها مقدار بایاس است.

همان‌طور که شکل 1.۱ نشان می‌دهد، افزایش بایاس باعث جابه‌جایی عمودی نمودار تابع به سمت بالا می‌شود و کاهش آن نمودار را به سمت پایین منتقل می‌کند.

اما باید میان نمودار تابع (z(x)) و مرز تصمیم تفاوت قائل شویم.

در نمودار تابع، تغییر بایاس به معنای انتقال عمودی خط (z=wx+b) است. در مقابل، اگر خروجی یک نورون با استفاده از آستانه (z=0) تعیین شود، تغییر بایاس باعث جابه‌جایی مکان آستانه روی محور ورودی خواهد شد.

برای مثال، اگر (w=2) و (b=-4) باشد، مرز تصمیم در نقطه‌ای قرار می‌گیرد که:

2x−4=02x-4=0

بنابراین:

x=2x=2

اگر بایاس به ۲− تغییر کند، خواهیم داشت:

2x−2=0⇒x=12x-2=0\quad\Rightarrow\quad x=1

پس تغییر بایاس از ۴− به ۲− باعث می‌شود آستانه تصمیم از (x=2) به (x=1) منتقل شود.

این تفسیر، رابطه میان بایاس و موقعیت تصمیم را روشن می‌کند.

1.۵. بایاس در فضای دوبعدی: چگونه مرز تصمیم جابه‌جا می‌شود؟

اکنون نورونی با دو ورودی را بررسی می‌کنیم:

z=w1x1+w2x2+bz=w_1x_1+w_2x_2+b

اگر تصمیم بر اساس علامت (z) گرفته شود، مرز میان دو ناحیه تصمیم مجموعه نقاطی است که مقدار (z) در آن‌ها صفر می‌شود:

w1x1+w2x2+b=0(1.7)\begin{equation} \boxed{w_1x_1+w_2x_2+b=0} \tag{1.7} \end{equation}

برای w₂ ≠ ۰، می‌توان معادله را نسبت به x₂ حل کرد:

x2=−w1w2x1−bw2(1.8)\begin{equation} \boxed{x_2=-\frac{w_1}{w_2}x_1-\frac{b}{w_2}} \tag{1.8} \end{equation}

در معادله ۵.۸، شیب خط برابر −w₁/w₂ و عرض از مبدأ برابر −b/w₂ است.

اگر وزن‌ها ثابت بمانند، تغییر بایاس شیب خط را تغییر نمی‌دهد؛ بلکه موقعیت آن را جابه‌جا می‌کند.

برای مثال، وزن‌ها را چنین انتخاب می‌کنیم:

w1=2,w2=1w_1=2,\qquad w_2=1

سه مقدار مختلف بایاس را بررسی می‌کنیم:

بایاسمعادله مرز تصمیم
۰(x2=-2x_1)
۲−(x2=-2x_1+2)
۴−(x2=-2x_1+4)

جدول 1.۵ — جابه‌جایی مرزهای تصمیم موازی بر اثر تغییر بایاس

در هر سه حالت، شیب خط برابر ۲− است و بنابراین خطوط با یکدیگر موازی‌اند.

بردار وزن 𝐰 = (۲، ۱)^T بر همه این خطوط عمود است. تغییر بایاس، جهت بردار وزن را تغییر نمی‌دهد و تنها موقعیت مجموعه نقاط دارای پیش‌فعال‌سازی صفر را جابه‌جا می‌کند.

1.۵.۱. فاصله مرز تصمیم از مبدأ مختصات

اگر بردار وزن غیرصفر باشد، می‌توان فاصله عمودی ابرصفحه 𝐰^T 𝐱 + b = ۰ از مبدأ مختصات را محاسبه کرد.

این فاصله برابر است با:

D=|b|‖𝐰‖2(1.9)\begin{equation} \boxed{D=\frac{|b|}{\|\mathbf{w}\|_2}} \tag{1.9} \end{equation}

در این معادله، D فاصله غیرمنفی مرز از مبدأ، |b| قدرمطلق بایاس و ‖𝐰‖₂ اندازه اقلیدسی بردار وزن است.

این رابطه برای بردار وزن غیرصفر معتبر است. اگر بردار وزن صفر باشد، معادله مرز به (b=0) تقلیل می‌یابد که بسته به مقدار بایاس، یا برای همه نقاط برقرار است یا برای هیچ نقطه‌ای برقرار نیست؛ در نتیجه، مفهوم ابرصفحه تصمیم معمول در آن حالت قابل استفاده نیست.

برای مثال، اگر 𝐰 = (۳، ۴)^T و b = −۱۰ باشد، اندازه بردار وزن برابر ۵ خواهد بود:

‖𝐰‖2=32+42=5\|\mathbf{w}\|_2=\sqrt{3^2+4^2}=5

بنابراین:

D=105=2D=\frac{10}{5}=2

مرز تصمیم در فاصله عمودی دو واحد از مبدأ قرار دارد.

این رابطه نشان می‌دهد اثر هندسی بایاس را نمی‌توان کاملاً مستقل از اندازه بردار وزن تحلیل کرد. بایاس ۱۰− برای یک بردار وزن با اندازه ۵، همان فاصله‌ای را ایجاد نمی‌کند که برای برداری با اندازه ۲۰ ایجاد خواهد کرد.

مثال تکمیلی  ـ محاسبه جابه‌جایی هندسی مرز تصمیم

صورت مسئله

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

𝐰=(3,4)T\mathbf{w}=(3,4)^{T}

مرز تصمیم اولیه آن برابر است با:

3x1+4x2−20=03x_1+4x_2-20=0

الف) فاصله عمودی مرز از مبدأ را محاسبه کنید.

ب) بایاس را طوری تغییر دهید که مرز جدید در فاصله شش واحدی از مبدأ قرار بگیرد و در همان سمت مرز اولیه باشد.

ج) بررسی کنید شیب مرز تغییر می‌کند یا خیر.

حل

اندازه بردار وزن برابر است با:

‖𝐰‖2=32+42=5\|\mathbf{w}\|_2=\sqrt{3^2+4^2}=5

بنابراین فاصله اولیه:

D1=|−20|5=4D_1=\frac{|-20|}{5}=4

برای ایجاد فاصله شش واحدی:

6=|b2|5|b2|=30\begin{aligned} 6&=\frac{|b_2|}{5}\\ |b_2|&=30 \end{aligned}

چون می‌خواهیم مرز جدید در همان سمت مرز اولیه قرار بگیرد، بایاس منفی انتخاب می‌شود:

b2=−30\boxed{b_2=-30}

مرز جدید:

3x1+4x2−30=03x_1+4x_2-30=0

اکنون هر دو معادله را نسبت به (x2) حل می‌کنیم:

x2=−34x1+5x2=−34x1+7.5\begin{aligned} x_2&=-\frac{3}{4}x_1+5\\ x_2&=-\frac{3}{4}x_1+7.5 \end{aligned}

شیب هر دو خط برابر −۳/۴ است؛ بنابراین خطوط موازی هستند.

فاصله عمودی بین دو مرز نیز برابر است با:

|(−30)−(−20)|5=2\frac{|(-30)-(-20)|}{5}=2

نتیجه آموزشی

بایاس از ۲۰− به ۳۰− تغییر کرده، اما جهت مرز ثابت مانده است. مرز تصمیم در راستای عمود بر خود، دو واحد جابه‌جا شده است.

نکته مهم آن است که تغییر ده واحدی بایاس الزاماً به معنای جابه‌جایی هندسی ده واحدی نیست؛ اندازه بردار وزن نیز در مقدار جابه‌جایی نقش دارد.

1.۶. آیا می‌توان بایاس را مانند یک وزن معمولی نمایش داد؟

از نظر ریاضی، بایاس را می‌توان با افزودن یک ورودی ثابت به مدل، در قالب یک وزن نمایش داد. این روش در بعضی کتاب‌ها و پیاده‌سازی‌های آموزشی برای یکپارچه کردن نمادگذاری استفاده می‌شود (Haykin, 2009).

فرض کنید:

z=w1x1+w2x2+bz=w_1x_1+w_2x_2+b

اکنون یک ورودی اضافی تعریف می‌کنیم که مقدار آن همیشه برابر یک است:

x0=1x_0=1

همچنین وزن متناظر این ورودی را برابر بایاس قرار می‌دهیم:

w0=bw_0=b

در نتیجه:

z=w0x0+w1x1+w2x2z=w_0x_0+w_1x_1+w_2x_2

چون (x0=1)، این رابطه دقیقاً معادل معادله اولیه خواهد بود.

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

𝐱~=[1x1⋮xd],𝐰~=[bw1⋮wd]\tilde{\mathbf{x}}= \begin{bmatrix} 1\\ x_1\\ \vdots\\ x_d \end{bmatrix} ,\qquad \tilde{\mathbf{w}}= \begin{bmatrix} b\\ w_1\\ \vdots\\ w_d \end{bmatrix}

پس در این صورت:

z=𝐰~T𝐱~(1.10)\begin{equation} \boxed{z=\tilde{\mathbf{w}}^{T}\tilde{\mathbf{x}}} \tag{1.10} \end{equation}

سپس در معادله 1.۱۰، هر دو بردار توسعه‌یافته (d+1) مؤلفه دارند. این بازنویسی از نظر مقدار خروجی با مدل بایاس‌دار اولیه معادل است.

آیا این بازنویسی به معنای حذف واقعی بایاس است؟

خیر. بایاس همچنان در مدل حضور دارد، اما اکنون به‌عنوان وزن یک ویژگی ثابت نمایش داده شده است. بنابراین، فقط شیوه نمایش ریاضی تغییر کرده است.

این روش می‌تواند برای بعضی اثبات‌های نظری یا پیاده‌سازی‌های آموزشی مفید باشد. بااین‌حال، در بسیاری از کتابخانه‌های یادگیری عمیق، بایاس به‌صورت پارامتری جداگانه نگهداری می‌شود؛ زیرا این شیوه از نظر سازمان‌دهی محاسبات و مدیریت پارامترها مناسب است.

1.۷. ارتباط بایاس با پیش‌پردازش و مرکزدهی داده‌ها

یکی از کاربردهای مهم بایاس زمانی روشن می‌شود که ویژگی‌های ورودی مرکزدهی (Centering) شده باشند.

فرض کنید یک ویژگی عددی (x) دارای میانگین (μ) باشد و مقدار مرکزدهی‌شده آن را به شکل زیر تعریف کنیم:

x′=x−μ(1.11)\begin{equation} x’=x-\mu \tag{1.11} \end{equation}

در این رابطه، (x’) ویژگی مرکزدهی‌شده و (μ) میانگین مورد استفاده برای مرکزدهی است.

اکنون یک مدل آفین را در نظر می‌گیریم:

z=wx+bz=wx+b

با جای‌گذاری (x=x’+μ)، خواهیم داشت:

z=w(x′+μ)+bz=w(x’+\mu)+b

بنابراین:

z=wx′+(wμ+b)z=wx’+(w\mu+b)

اگر بایاس جدید را چنین تعریف کنیم:

b′=wμ+b(1.12)\begin{equation} \boxed{b’=w\mu+b} \tag{1.12} \end{equation}

مدل با ورودی مرکزدهی‌شده همان خروجی قبلی را تولید خواهد کرد:

z=wx′+b′z=wx’+b’

این نتیجه نشان می‌دهد که تغییر مبدأ نمایش داده‌ها می‌تواند مقدار بایاس متناظر را تغییر دهد، بدون آنکه رابطه محاسباتی اصلی تغییر کند.

به همین دلیل، مقدار عددی بایاس باید در ارتباط با شیوه نمایش و پیش‌پردازش داده تفسیر شود.

در مثال حاضر، اگر ورودی‌ها مرکزدهی شوند، مقدار صفر دیگر الزاماً به معنای صفر فیزیکی متغیر نیست؛ بلکه می‌تواند نماینده مقدار میانگین داده‌های آموزشی باشد.

از دیدگاه روش‌شناسی یادگیری ماشین، میانگین و سایر پارامترهای پیش‌پردازش باید فقط از داده آموزشی محاسبه شوند و سپس بدون بازبرآورد از داده آزمون، برای تبدیل داده‌های جدید استفاده شوند. این موضوع برای جلوگیری از نشت اطلاعات (Data Leakage) اهمیت دارد (Géron, 2022).

مثال تکمیلی  ـ مرکزدهی ورودی‌ها بدون تغییر نتیجه محاسبه

صورت مسئله

یک مدل عددی فرضی برای محاسبه امتیاز عملکرد دستگاه تعریف شده است:

z=2x1−3x2+10z=2x_1-3x_2+10

در این مدل، (x1) و (x2) دو شاخص اندازه‌گیری‌شده هستند. فرض کنید میانگین‌های محاسبه‌شده از داده‌های آموزشی به‌ترتیب ۲۰ و ۵ باشند.

ویژگی‌های مرکزدهی‌شده چنین تعریف می‌شوند:

x1′=x1−20x2′=x2−5\begin{aligned} x’_1&=x_1-20\\ x’_2&=x_2-5 \end{aligned}

الف) بایاس جدید را به دست آورید.

ب) نشان دهید برای نمونه x₁ = ۲۴ و x₂ = ۷، خروجی تغییر نمی‌کند.

حل

از تعریف ویژگی‌های جدید داریم:

x1=x1′+20x2=x2′+5\begin{aligned} x_1&=x’_1+20\\ x_2&=x’_2+5 \end{aligned}

جایگذاری در معادله اولیه:

z=2(x1′+20)−3(x2′+5)+10z=2(x’_1+20)-3(x’_2+5)+10

با ساده‌سازی:

z=2x1′−3x2′+40−15+10z=2x1′−3x2′+35\begin{aligned} z&=2x’_1-3x’_2+40-15+10\\ \boxed{z}&=\boxed{2x’_1-3x’_2+35} \end{aligned}

بنابراین بایاس جدید برابر ۳۵ است.

برای نمونه موردنظر، خروجی مدل اولیه:

z=2(24)−3(7)+10=37z=2(24)-3(7)+10=37

مقادیر مرکزدهی‌شده عبارت‌اند از:

x1′=4,x2′=2x’_1=4,\qquad x’_2=2

در مدل جدید:

z=2(4)−3(2)+35=37z=2(4)-3(2)+35=37

پس هر دو مدل دقیقاً یک خروجی تولید می‌کنند.

تفسیر

بایاس از ۱۰ به ۳۵ تغییر کرده است؛ اما این تغییر به معنای تغییر رفتار واقعی مدل نیست. فقط مبدأ نمایش ویژگی‌ها عوض شده است.

این مثال نشان می‌دهد که مقایسه بایاس دو مدل بدون توجه به پیش‌پردازش ورودی‌ها می‌تواند گمراه‌کننده باشد.

1.۸. پیاده‌سازی بایاس با پایتون

اکنون مفاهیم ریاضی این بخش را در قالب چند برنامه ساده بررسی می‌کنیم.

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

def neuron_linear(x, w, b):
    if len(x) != len(w):
        raise ValueError(
            "Input and weight dimensions μst match."
        )

    weighted_sum = 0.0

    for xi, wi in zip(x, w):
        weighted_sum += xi * wi

    z = weighted_sum + b
    return z


x = [2.0, 3.0]
w = [0.5, -1.0]
b = 2.0

print(neuron_linear(x, w, b))

خروجی:

0.0

محاسبه به شکل زیر انجام می‌شود:

z=0.5(2)−1(3)+2=0z=0.5(2)-1(3)+2=0

در این برنامه، تابع neuron_linear هنوز تابع فعال‌سازی ندارد و فقط مقدار پیش‌فعال‌سازی را برمی‌گرداند.

1.۸.۱. آزمایش تغییر بایاس با ورودی ثابت

آزمایش 1.۱ — بررسی رابطه خطی میان بایاس و پیش‌فعال‌سازی

هدف آزمایش آن است که نشان دهیم با ثابت ماندن وزن‌ها و ورودی‌ها، تغییر بایاس دقیقاً به همان مقدار بر (z) اثر می‌گذارد.

import numpy as np
import matplotlib.pyplot as plt

x = np.array([2.0, 3.0])
w = np.array([0.5, -1.0])

bias_values = np.linspace(-5, 5, 101)

z_values = [
    np.dot(w, x) + b
    for b in bias_values
]

plt.plot(bias_values, z_values)

plt.xlabel("Bias")
plt.ylabel("Pre-activation z")
plt.title("Effect of Bias on Pre-activation")
plt.grid(alpha=0.3)

plt.show()

در این آزمایش، ورودی‌ها و وزن‌ها ثابت هستند و تنها بایاس تغییر می‌کند.

از آنجا که مجموع وزن‌دار اولیه برابر ۲− است، رابطه پیش‌فعال‌سازی چنین خواهد بود:

z=b−2z=b-2

بنابراین، نمودار رابطه میان بایاس و پیش‌فعال‌سازی خطی با شیب یک خواهد بود.

این نتیجه با معادله 1.۳ سازگار است.

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

1.۸.۲. آزمایش جابه‌جایی مرز تصمیم

آزمایش 1.۲ — اثر بایاس بر موقعیت مرز تصمیم در فضای دوبعدی

در این آزمایش، دو وزن را ثابت نگه می‌داریم و مرزهای تصمیم حاصل از سه مقدار بایاس را رسم می‌کنیم.

import numpy as np
import matplotlib.pyplot as plt

w1 = 2.0
w2 = 1.0

biases = [0.0, -2.0, -4.0]

x1 = np.linspace(-3, 3, 200)

for b in biases:
    x2 = -(w1 * x1 + b) / w2

    plt.plot(
        x1,
        x2,
        label=f"Bias = {b}"
    )

plt.xlabel("x1")
plt.ylabel("x2")
plt.title("Decision Boundary Translation")
plt.legend()
plt.grid(alpha=0.3)
plt.axis("equal")

plt.show()

این برنامه معادله 1.۸ را برای سه مقدار بایاس محاسبه می‌کند.

در هر سه حالت، شیب خطوط برابر ۲− است؛ بنابراین مرزهای تصمیم موازی خواهند بود.

نتیجه قابل استنتاج: با ثابت ماندن بردار وزن غیرصفر، تغییر بایاس موقعیت مرز تصمیم را تغییر می‌دهد، اما جهت آن را تغییر نمی‌دهد.

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

1.۹. پیاده‌سازی برداری برای چند نمونه

در بخش قبلی، یاد گرفتیم که چگونه مجموع وزن‌دار چند نمونه را با یک ضرب ماتریسی محاسبه کنیم.

اکنون بایاس را به آن محاسبه اضافه می‌کنیم.

فرض کنید:

X∈ℝn×dX\in\mathbb{R}^{n\times d}

ماتریس داده شامل (n) نمونه و (d) ویژگی باشد.

بردار وزن دارای (d) مؤلفه و بایاس یک مقدار اسکالر است.

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

𝐳=X𝐰+b𝟏n(1.13)\begin{equation} \boxed{\mathbf{z}=X\mathbf{w}+b\mathbf{1}_n} \tag{1.13} \end{equation}

در معادله ۱.۱۳، نماد 𝟏ₙ برداری با n مؤلفه است که تمام مقادیر آن برابر یک‌اند. ضرب بایاس در این بردار باعث می‌شود مقدار ثابت b به پیش‌فعال‌سازی تمام نمونه‌ها اضافه شود.

در NumPy، می‌توان این محاسبه را به‌شکل ساده‌تری انجام داد:

import numpy as np

X = np.array([
    [1.0, 2.0],
    [3.0, 1.0],
    [2.0, 4.0]
])

w = np.array([2.0, -1.0])
b = 1.5

z = X @ w + b

print(z)
print(z.shape)

خروجی

[1.5 6.5 1.5]
(3,)

برای نمونه اول:

z1=2(1)−1(2)+1.5=1.5z_1=2(1)-1(2)+1.5=1.5

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

z2=2(3)−1(1)+1.5=6.5z_2=2(3)-1(1)+1.5=6.5

و برای نمونه سوم:

z3=2(2)−1(4)+1.5=1.5z_3=2(2)-1(4)+1.5=1.5

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

این رفتار در NumPy با سازوکار انتشار ابعاد (Broadcasting) پیاده‌سازی می‌شود؛ سازوکاری که اجازه می‌دهد عملیات سازگار میان آرایه‌ها و مقادیر اسکالر به‌صورت مؤلفه‌ای انجام شود.

1.۱۰. خطاهای رایج در درک مفهوم بایاس

1.۱۰.۱. یکسان دانستن بایاس با خطای مدل

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

بنابراین، بزرگ بودن مقدار بایاس لزوماً به معنای وجود خطا، تبعیض یا سوگیری نامطلوب در مدل نیست.

1.۱۰.۲. تصور اینکه بایاس همیشه مثبت است

بایاس می‌تواند مثبت، منفی یا صفر باشد. محدودیت عمومی برای مثبت بودن آن وجود ندارد.

علامت مناسب بایاس به هدف مدل، تعریف ورودی‌ها و سایر پارامترها وابسته است.

برای مثال، در مسئله هشدار دما، از بایاس منفی استفاده کردیم تا آستانه تصمیم به مقدار مثبت ۷۰ منتقل شود.

1.۱۰.۳. تصور اینکه بایاس و وزن نقش یکسانی دارند

اگرچه بایاس را می‌توان به‌صورت وزن یک ورودی ثابت نمایش داد، اثر آن نسبت به تغییر ویژگی‌های اصلی با اثر وزن‌های معمولی تفاوت دارد.

وزن هر ویژگی، تأثیر آن ویژگی را تنظیم می‌کند؛ بایاس سطح پایه پیش‌فعال‌سازی را تغییر می‌دهد.

1.۱۰.۴. حذف بایاس بدون بررسی ساختار مسئله

در برخی مدل‌ها، حذف بایاس ممکن است به دلایل نظری یا مهندسی مناسب باشد. اما حذف آن صرفاً برای ساده‌تر کردن محاسبات می‌تواند قدرت نمایش مدل را محدود کند.

برای مثال، یک نورون خطی بدون بایاس نمی‌تواند تابع آفین (z=2x+3) را برای تمام مقادیر حقیقی (x) دقیقاً نمایش دهد.

1.۱۰.۵. فرض اینکه تغییر بایاس همیشه خروجی تصمیم را تغییر می‌دهد

اگر خروجی نورون با تابع پله‌ای تعیین شود، تغییر بایاس ممکن است مقدار پیش‌فعال‌سازی را تغییر دهد، اما تا زمانی که نمونه از مرز آستانه عبور نکند، خروجی دودویی ثابت بماند.

بنابراین، باید میان تغییر مقدار (z) و تغییر برچسب خروجی تمایز برقرار کرد.

1.۱۱. پروژه عملی: طراحی یک نورون آستانه‌ای با وزن و بایاس قابل تنظیم

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

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

1.۱۱.۱. تعریف نورون

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

def simple_neuron(x, w, b):
    z = w * x + b
    if z >= 0:
        return 1
    return 0

اکنون می‌خواهیم نورون در دمای ۷۰ و بالاتر خروجی یک تولید کند.

برای این کار وزن را برابر یک و بایاس را برابر ۷۰− قرار می‌دهیم:

def simple_neuron(x, w, b):
    z = w * x + b

    if z >= 0:
        return 1

    return 0

خروجی:

55 0
65 0
69 0
70 1
75 1
85 1

نورون دقیقاً مطابق قانون تصمیم تعریف‌شده رفتار می‌کند.

1.۱۱.۲. تغییر آستانه بدون تغییر کد

اکنون فرض کنید آستانه مطلوب از ۷۰ به ۸۰ تغییر کند.

برای اعمال این تغییر، نیازی به بازنویسی تابع simple_neuron نداریم. کافی است بایاس را به ۸۰− تغییر دهیم:

w = 1.0 b = -80.0

در این حالت، شرط تصمیم برابر x − ۸۰ ≥ ۰ خواهد بود.

این مثال نشان می‌دهد که پارامتری کردن مدل، امکان تغییر رفتار آن را بدون تغییر ساختار محاسباتی فراهم می‌کند.

اما این فرایند هنوز یادگیری خودکار نیست؛ زیرا انسان مقدار بایاس جدید را مستقیماً تعیین کرده است.

1.۱۱.۳. تعمیم پروژه به دو ورودی

برای تعمیم پروژه، نورونی با دو ورودی طراحی می‌کنیم. در این مثال هر دو ورودی در مقیاسی عددی از پیش تعریف‌شده قرار دارند.

import numpy as np

def two_input_neuron(x, w, b):
    x = np.asarray(x, dtype=float)
    w = np.asarray(w, dtype=float)

    if x.shape != (2,) or w.shape != (2,):
        raise ValueError(
            "Expected exactly two inputs and two weights."
        )

    z = np.dot(w, x) + b

    prediction = int(z >= 0)

    return z, prediction


x = [0.7, 0.4]
w = [2.0, -1.0]
b = -0.5

z, prediction = two_input_neuron(x, w, b)

print("Pre-activation:", z)
print("Prediction:", prediction)

خروجی:

Pre-activation: 0.4999999999999999
Prediction: 1

مقدار ریاضی پیش‌فعال‌سازی دقیقاً ۰٫۵ است؛ اما ممکن است نمایش عددی رایانه به‌دلیل محدودیت نمایش اعداد اعشاری شناور، مقداری مانند 0.4999999999999999 تولید کند.

این تفاوت کوچک معمولاً ناشی از حساب ممیز شناور (Floating-Point Arithmetic) است و به معنای اشتباه بودن فرمول نورون نیست.

اگر خروجی را با قالب‌بندی مناسب چاپ کنیم، مقدار مورد انتظار نمایش داده می‌شود:

print(f"Pre-activation: {z:.2f}")

خروجی

Pre-activation: 0.50

نکته مهندسی این است که در محاسبات عددی، به‌ویژه هنگام مقایسه مقادیر نزدیک به آستانه، باید رفتار اعداد شناور و دقت محاسبات مورد توجه قرار گیرد.

1.۱۲. تمرین‌های پایان بخش

تمرین 1.۱ — مفهوم بایاس

توضیح دهید چرا تابع (z=3x) نمی‌تواند در (x=0) مقدار ۵ تولید کند. سپس تابع آفینی طراحی کنید که این ویژگی را داشته باشد و شیب آن برابر ۳ باقی بماند.

تمرین 1.۲ — محاسبه پیش‌فعال‌سازی

نورونی دارای سه ورودی (x=(2,-1,4)^T)، وزن‌های (w=(1,3,-2)^T) و بایاس ۵ است. مقدار پیش‌فعال‌سازی را محاسبه کنید و سهم وزن‌ها و بایاس را جداگانه مشخص کنید.

تمرین 1.۳ — تعیین بایاس مجهول

فرض کنید در یک نورون تک‌ورودی، وزن برابر ۴ است. می‌خواهیم برای ورودی (x=3)، مقدار پیش‌فعال‌سازی برابر ۲۰ باشد. مقدار بایاس لازم را محاسبه کنید.

تمرین 1.۴ — تبدیل آستانه به بایاس

یک سامانه باید هنگامی خروجی یک تولید کند که مقدار ورودی دست‌کم برابر ۱۵ باشد. با فرض وزن مثبت یک و تابع پله‌ای در آستانه صفر، بایاس مناسب را تعیین کنید.

تمرین 1.۵ — تحلیل علامت وزن

اگر وزن یک نورون تک‌ورودی منفی باشد، آیا افزایش بایاس همچنان مقدار پیش‌فعال‌سازی را افزایش می‌دهد؟ پاسخ را با محاسبه دو مثال عددی توضیح دهید.

تمرین 1.۶ — مرز تصمیم دوبعدی

برای نورونی با (w1=2)، (w2=-1) و (b=3)، معادله مرز تصمیم را بنویسید و آن را روی صفحه رسم کنید.

تمرین 1.۷ — فاصله مرز از مبدأ

برای بردار وزن 𝐰 = (۶، ۸)^T و بایاس b = −۲۰، فاصله عمودی مرز تصمیم از مبدأ را محاسبه کنید.

تمرین 1.۸ — بایاس و ورودی ثابت

یک نورون با چهار ورودی و یک بایاس را به مدل معادلی با پنج ورودی و بدون بایاس صریح تبدیل کنید. توضیح دهید مقدار ورودی پنجم و وزن متناظر آن باید چه باشد.

تمرین 1.۹ — مرکزدهی داده

مدل اولیه (z=2x+5) است. اگر ورودی جدید به شکل (x’=x-10) تعریف شود، بایاس جدید را طوری تعیین کنید که خروجی مدل برای تمام ورودی‌ها بدون تغییر بماند.

تمرین 1.۱۰ — تحلیل محدودیت‌ها

آیا می‌توان با تغییر بایاس، شیب خط (z=2x+b) را تغییر داد؟ اگر پاسخ منفی است، توضیح دهید برای تغییر شیب باید کدام پارامتر را اصلاح کرد.

تمرین 1.۱۱ — پیاده‌سازی با پایتون

تابعی بنویسید که بردار ورودی، بردار وزن و بایاس را دریافت کند و مقدار پیش‌فعال‌سازی را بازگرداند. تابع باید ناسازگاری ابعاد و وجود مقادیر غیرمتناهی را تشخیص دهد.

تمرین 1.۱۲ — آزمایش چند بایاس

برای یک مجموعه داده دوبعدی ثابت، پنج مقدار بایاس انتخاب کنید و مرزهای تصمیم را رسم کنید. بررسی کنید آیا همه مرزها موازی‌اند یا خیر.

تمرین 1.۱۳ — مرز تصمیم و جهت وزن

بردار وزن ((3,4)^T) را ثابت نگه دارید و بایاس را از ۱۰− تا ۱۰ تغییر دهید. نشان دهید جهت عمود بر مرز تصمیم تغییر نمی‌کند.

تمرین 1.۱۴ — اثر بایاس بر طبقه‌بندی

پنج نمونه دوبعدی طراحی کنید و خروجی یک نورون آستانه‌ای را برای سه مقدار بایاس محاسبه کنید. مشخص کنید کدام نمونه‌ها با تغییر بایاس کلاس خود را تغییر می‌دهند.

تمرین 1.۱۵ — پرسش تحلیلی

آیا ممکن است دو نورون با وزن‌ها و بایاس‌های متفاوت، مرز تصمیم یکسانی داشته باشند؟ یک مثال عددی ارائه دهید. بررسی کنید ضرب تمام وزن‌ها و بایاس در یک عدد مثبت غیرصفر چه اثری بر مرز و خروجی تابع پله‌ای دارد.

تمرین 1.۱۶ — پروژه تکمیلی

یک برنامه پایتون طراحی کنید که کاربر بتواند دو وزن و یک بایاس را تغییر دهد و برنامه، مرز تصمیم متناظر را رسم کند. همچنین سه نمونه دلخواه روی صفحه قرار دهید و با تغییر پارامترها بررسی کنید کدام نمونه‌ها در سمت مثبت یا منفی مرز قرار می‌گیرند.

1.۱۳. مطالعه موردی: بررسی تأثیر بایاس بر تصمیم‌گیری یک سیستم روشنایی هوشمند

1.۱۳.۱. معرفی مسئله و هدف مطالعه موردی

یکی از کاربردهای نورون مصنوعی، استفاده از آن در سامانه‌هایی است که باید بر اساس چند ورودی، یک تصمیم مشخص اتخاذ کنند. برای مثال، یک سیستم روشنایی هوشمند ممکن است با بررسی میزان تاریکی محیط و وضعیت حضور افراد، درباره روشن‌شدن چراغ تصمیم بگیرد.

در این مطالعه موردی، یک نورون مصنوعی ساده طراحی می‌کنیم که دو ورودی دریافت می‌کند و خروجی آن یکی از دو مقدار صفر یا یک است.

هدف اصلی، طراحی یک سیستم روشنایی تجاری یا آموزش یک مدل یادگیری ماشین نیست؛ بلکه می‌خواهیم به‌صورت عددی و عملی بررسی کنیم که تغییر بایاس چگونه می‌تواند تصمیم نورون را تغییر دهد، حتی زمانی که ورودی‌ها و وزن‌ها ثابت باقی می‌مانند.

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

1.۱۳.۲. تعریف ورودی‌ها و خروجی نورون

فرض می‌کنیم نورون دو ورودی دارد.

ورودی اول، (x1): میزان تاریکی محیط

این ورودی عددی بین صفر تا ۱۰ است. مقدار صفر نشان‌دهنده روشنایی زیاد و مقدار ۱۰ نشان‌دهنده تاریکی شدید محیط است. بنابراین، هرچه (x1) بزرگ‌تر باشد، نیاز احتمالی به روشنایی مصنوعی بیشتر خواهد بود.

ورودی دوم، (x2): وضعیت حضور فرد

این ورودی دودویی است و فقط دو مقدار می‌گیرد:

  • (x2=0): فردی در محیط حضور ندارد.
  • (x2=1): دست‌کم یک فرد در محیط حضور دارد.

خروجی نورون نیز دودویی است:

  • (y=0): فرمان روشن‌شدن چراغ صادر نمی‌شود.
  • (y=1): فرمان روشن‌شدن چراغ صادر می‌شود.

توجه داشته باشید که این خروجی صرفاً تصمیم مدل آموزشی است و لزوماً به معنای رفتار مطلوب یک سیستم روشنایی واقعی نیست.

1.۱۳.۳. معرفی داده‌های مورد استفاده

برای بررسی رفتار نورون، مجموعه‌ای شامل ۱۶ مشاهده طراحی می‌کنیم. این مشاهدات از ترکیب هشت سطح تاریکی، از یک تا هشت، با دو وضعیت حضور فرد به دست آمده‌اند.

شماره مشاهدهمیزان تاریکی (x1)حضور فرد (x2)
۱۱۰
۲۲۰
۳۳۰
۴۴۰
۵۵۰
۶۶۰
۷۷۰
۸۸۰
۹۱۱
۱۰۲۱
۱۱۳۱
۱۲۴۱
۱۳۵۱
۱۴۶۱
۱۵۷۱
۱۶۸۱

این داده‌ها به‌صورت هدفمند و برای آموزش ساخته شده‌اند و حاصل اندازه‌گیری واقعی حسگرها نیستند. استفاده از داده‌های کنترل‌شده به ما اجازه می‌دهد اثر بایاس را بدون دخالت عوامل اضافی بررسی کنیم.

همچنین در این مطالعه موردی، برچسب واقعی یا خروجی مطلوب برای مشاهدات تعریف نشده است؛ زیرا هدف، ارزیابی دقت پیش‌بینی نیست، بلکه مشاهده تغییر رفتار نورون در برابر تغییر بایاس است.

1.۱۳.۴. تعریف مدل ریاضی نورون

مدل مورد استفاده، یک نورون مصنوعی با دو ورودی است.

مقدار پیش‌فعال‌سازی نورون از رابطه زیر محاسبه می‌شود:

z=w1x1+w2x2+bz=w_1x_1+w_2x_2+b

در این رابطه، (w1) و (w2) وزن‌های ورودی و (b) مقدار بایاس است.

برای این آزمایش، وزن‌ها را به‌صورت زیر انتخاب می‌کنیم:

w1=0.8,w2=2w_1=0.8,\qquad w_2=2

بنابراین:

z=0.8x1+2x2+b\boxed{z=0.8x_1+2x_2+b}

وزن ۰٫۸ نشان می‌دهد که افزایش هر واحد تاریکی، با ثابت‌بودن سایر عوامل، مقدار پیش‌فعال‌سازی را ۰٫۸ واحد افزایش می‌دهد.

همچنین تغییر وضعیت حضور فرد از صفر به یک، مقدار پیش‌فعال‌سازی را دو واحد افزایش می‌دهد.

این وزن‌ها به‌صورت آموزشی انتخاب شده‌اند و از فرایند آموزش یا بهینه‌سازی به دست نیامده‌اند.

برای تبدیل مقدار پیش‌فعال‌سازی به تصمیم دودویی، از تابع پله‌ای استفاده می‌کنیم:

y={1z≥00z<0y= \begin{cases} 1 & z\geq 0\\ 0 & z<0 \end{cases}

در نتیجه، اگر مقدار (z) بزرگ‌تر یا مساوی صفر باشد، نورون تصمیم مثبت می‌گیرد؛ در غیر این صورت، خروجی صفر خواهد بود.

1.۱۳.۵. طراحی آزمایش و انتخاب مقادیر بایاس

برای بررسی تأثیر بایاس، سه مقدار متفاوت را در نظر می‌گیریم:

b1=−5,b2=−3,b3=−1b_1=-5,\qquad b_2=-3,\qquad b_3=-1

در هر سه حالت، داده‌های ورودی و وزن‌ها کاملاً ثابت هستند. تنها پارامتری که تغییر می‌کند، بایاس است.

بنابراین، سه مدل زیر بررسی می‌شوند:

  • حالت اول: بایاس برابر با ۵−
z1=0.8x1+2x2−5z_1=0.8x_1+2x_2-5
  • حالت دوم: بایاس برابر با ۳−
z2=0.8x1+2x2−3z_2=0.8x_1+2x_2-3
  • حالت سوم: بایاس برابر با ۱−
z3=0.8x1+2x2−1z_3=0.8x_1+2x_2-1

با مقایسه این سه حالت می‌توانیم مشخص کنیم که افزایش بایاس، بدون تغییر سایر پارامترها، چه اثری بر خروجی نورون دارد.

1.۱۳.۶. حل عددی چند مشاهده

پیش از اجرای برنامه، چند مشاهده را به‌صورت دستی بررسی می‌کنیم تا منطق محاسبات روشن شود.

الف) مشاهده اول: تاریکی کم و نبود فرد

فرض کنید:

x1=1,x2=0x_1=1,\qquad x_2=0

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

s=0.8(1)+2(0)=0.8s=0.8(1)+2(0)=0.8

اکنون سه مقدار بایاس را اعمال می‌کنیم:

z1=0.8−5=−4.2z2=0.8−3=−2.2z3=0.8−1=−0.2\begin{aligned} z_1&=0.8-5=-4.2\\ z_2&=0.8-3=-2.2\\ z_3&=0.8-1=-0.2 \end{aligned}

در هر سه حالت، مقدار پیش‌فعال‌سازی منفی است؛ بنابراین خروجی نورون صفر خواهد بود.

بایاسپیش‌فعال‌سازیخروجی
۵−۴٫۲−۰
۳−۲٫۲−۰
۱−۰٫۲−۰

این مثال نشان می‌دهد که تغییر بایاس لزوماً تصمیم همه مشاهدات را تغییر نمی‌دهد.

ب) مشاهده چهارم: تاریکی متوسط و نبود فرد

اکنون فرض کنید:

x1=4,x2=0x_1=4,\qquad x_2=0

مجموع وزن‌دار ورودی‌ها برابر است با:

s=0.8(4)+2(0)=3.2s=0.8(4)+2(0)=3.2

برای بایاس ۵− داریم:

z1=3.2−5=−1.8z_1=3.2-5=-1.8

پس:

y1=0y_1=0

برای بایاس ۳−:

z2=3.2−3=0.2z_2=3.2-3=0.2

پس:

y2=1y_2=1

برای بایاس ۱−:

z3=3.2−1=2.2z_3=3.2-1=2.2

پس:

y3=1y_3=1
بایاسپیش‌فعال‌سازیخروجی
۵−۱٫۸−۰
۳−۰٫۲۱
۱−۲٫۲۱

در این مشاهده، با تغییر بایاس از ۵− به ۳−، تصمیم نورون از صفر به یک تغییر می‌کند.

نکته مهم این است که میزان تاریکی و وضعیت حضور فرد تغییر نکرده‌اند. بنابراین، علت تغییر تصمیم فقط تغییر بایاس است.

ج) مشاهده دهم: تاریکی کم و حضور فرد

در این حالت داریم:

x1=2,x2=1x_1=2,\qquad x_2=1

مجموع وزن‌دار ورودی‌ها:

s=0.8(2)+2(1)=3.6s=0.8(2)+2(1)=3.6

در سه حالت بایاس:

z1=3.6−5=−1.4z2=3.6−3=0.6z3=3.6−1=2.6\begin{aligned} z_1&=3.6-5=-1.4\\ z_2&=3.6-3=0.6\\ z_3&=3.6-1=2.6 \end{aligned}
بایاسپیش‌فعال‌سازیخروجی
۵−۱٫۴−۰
۳−۰٫۶۱
۱−۲٫۶۱

نتیجه نشان می‌دهد که حتی در حضور فرد نیز تصمیم نورون به مقدار بایاس وابسته است.

این سه مثال، مبنای محاسباتی آزمایش پایتون را تشکیل می‌دهند.

1.۱۳.۷. پیاده‌سازی مطالعه موردی با پایتون

در این مرحله، تمام ۱۶ مشاهده را با استفاده از پایتون بررسی می‌کنیم.

برنامه ابتدا داده‌ها و وزن‌ها را تعریف می‌کند، سپس مقدار پیش‌فعال‌سازی و خروجی نورون را برای سه مقدار بایاس محاسبه می‌کند. در ادامه، تعداد تصمیم‌های مثبت و تعداد تصمیم‌هایی را که با تغییر بایاس عوض شده‌اند گزارش می‌دهد.

در پایان نیز نموداری رسم می‌کند که موقعیت مرزهای تصمیم را در فضای دو ورودی نشان می‌دهد.

برای اجرای برنامه به کتابخانه‌های NumPy و  Matplotlib نیاز داریم. اگر این کتابخانه‌ها نصب نیستند، می‌توان از دستور زیر استفاده کرد:

pip install numpy matplotlib

کد کامل مطالعه موردی:

import numpy as np
import matplotlib.pyplot as plt

# ----------------------------------------
# 1. Define educational observations
# ----------------------------------------

# x1: Darkness score
# x2: Occupancy (0 or 1)

data = np.array([
    [1, 0],
    [2, 0],
    [3, 0],
    [4, 0],
    [5, 0],
    [6, 0],
    [7, 0],
    [8, 0],
    [1, 1],
    [2, 1],
    [3, 1],
    [4, 1],
    [5, 1],
    [6, 1],
    [7, 1],
    [8, 1]
], dtype=float)

# ----------------------------------------
# 2. Define weights and biases
# ----------------------------------------

w = np.array([0.8, 2.0])

biases = [-5.0, -3.0, -1.0]

# ----------------------------------------
# 3. Calculate weighted sums
# ----------------------------------------

weighted_sum = data @ w

print("Dataset shape:", data.shape)

print(
    "Missing values:",
    int(np.isnan(data).sum())
)

print(
    "First sample:",
    data[0].tolist()
)

print(
    "First weighted sum:",
    f"{weighted_sum[0]:.2f}"
)

# ----------------------------------------
# 4. Calculate neuron decisions
# ----------------------------------------

decisions = {}

for b in biases:

    z = weighted_sum + b

    y = (z >= 0).astype(int)

    decisions[b] = y

    positive_count = int(y.sum())

    print(
        f"Bias={b:+.1f}: "
        f"Positive decisions={positive_count}, "
        f"First z={z[0]:.2f}, "
        f"First decision={y[0]}"
    )

# ----------------------------------------
# 5. Count changed decisions
# ----------------------------------------

changed = np.count_nonzero(
    decisions[-5.0] != decisions[-1.0]
)

print(
    "Changed decisions:",
    int(changed)
)

# ----------------------------------------
# 6. Visualize decision boundaries
# ----------------------------------------

colors = [
    "#800020",
    "#35B7F3",
    "#F5B700"
]

fig, ax = plt.subplots(
    figsize=(9, 6)
)

# Plot observations for occupancy = 0 and 1

for occupancy, marker in [
    (0, "o"),
    (1, "s")
]:

    points = data[
        data[:, 1] == occupancy
    ]

    ax.scatter(
        points[:, 0],
        points[:, 1],
        s=65,
        marker=marker,
        color=(
            "#666666"
            if occupancy == 0
            else "#333333"
        ),
        label=f"Occupancy = {occupancy}",
        zorder=3
    )

# Plot the three decision boundaries

x1 = np.linspace(0, 10, 400)

for b, color in zip(biases, colors):

    x2 = -(
        w[0] * x1 + b
    ) / w[1]

    ax.plot(
        x1,
        x2,
        color=color,
        linewidth=2.2,
        label=f"Bias = {b:+g}"
    )

# ----------------------------------------
# 7. Configure chart
# ----------------------------------------

ax.set_xlim(0, 10)
ax.set_ylim(-0.3, 2.8)

ax.set_xlabel(
    "Darkness score (0-10)"
)

ax.set_ylabel(
    "Occupancy (0 or 1)"
)

ax.set_title(
    "Bias and the Decision Boundary: "
    "Smart Lighting"
)

ax.set_yticks([0, 1, 2])

ax.grid(alpha=0.2)

ax.legend(loc="upper right")

plt.tight_layout()

# ----------------------------------------
# 8. Save and display chart
# ----------------------------------------

plt.savefig(
    "smart_lighting_bias_case_study.png",
    dpi=300,
    bbox_inches="tight"
)

plt.show()

1.۱۳.۸. خروجی واقعی اجرای برنامه

پس از اجرای کد، خروجی زیر در محیط پایتون نمایش داده می‌شود:

Dataset shape: (16, 2)
Missing values: 0
First sample: [1.0, 0.0]
First weighted sum: 0.80

Bias=-5.0: Positive decisions=7, First z=-4.20, First decision=0
Bias=-3.0: Positive decisions=12, First z=-2.20, First decision=0
Bias=-1.0: Positive decisions=15, First z=-0.20, First decision=0

Changed decisions: 8

در ابتدای خروجی مشاهده می‌کنیم که آرایه داده‌ها دارای ۱۶ سطر و دو ستون است. همچنین هیچ مقدار گمشده‌ای در داده‌ها وجود ندارد.

برای مشاهده اول، مجموع وزن‌دار ورودی‌ها برابر با ۰٫۸ است. با اعمال سه مقدار بایاس، پیش‌فعال‌سازی به‌ترتیب برابر با ۴٫۲−، ۲٫۲− و ۰٫۲− می‌شود.

بنابراین، تصمیم نورون برای مشاهده اول در هر سه حالت صفر باقی می‌ماند.

اما نتیجه مهم‌تر مربوط به تعداد تصمیم‌های مثبت است.

مقدار بایاستعداد تصمیم‌های مثبتتعداد تصمیم‌های صفر
۵−۷۹
۳−۱۲۴
۱−۱۵۱

با افزایش بایاس از ۵− به ۳−، تعداد تصمیم‌های مثبت از هفت به دوازده افزایش یافته است.

همچنین با افزایش بایاس از ۳− به ۱−، تعداد تصمیم‌های مثبت از دوازده به پانزده رسیده است.

در مجموع، هنگام تغییر بایاس از ۵− به ۱−، تصمیم نورون برای هشت مشاهده تغییر کرده است.

این نتیجه نشان می‌دهد که حتی یک پارامتر ثابت نیز می‌تواند بر بخش قابل‌توجهی از خروجی‌های یک نورون اثر بگذارد.

1.۱۳.۹. نمودار خروجی برنامه

شکل زیر، خروجی واقعی کد پایتون است.

در این نمودار، محور افقی میزان تاریکی محیط و محور عمودی وضعیت حضور فرد را نشان می‌دهد.

نقاط دایره‌ای مربوط به مشاهده‌هایی هستند که فردی در محیط حضور ندارد. نقاط مربعی نیز وضعیت حضور فرد را نشان می‌دهند.

سه خط رنگی، مرزهای تصمیم نورون را برای سه مقدار متفاوت بایاس نمایش می‌دهند.

  • خط زرشکی: بایاس ۵−
  • خط آبی روشن: بایاس ۳−
  • خط طلایی: بایاس ۱−

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

1.۱۳.۱۰. تحلیل ریاضی مرزهای تصمیم

مرز تصمیم نورون در نقاطی قرار دارد که مقدار پیش‌فعال‌سازی برابر با صفر باشد.

بنابراین:

0.8x1+2x2+b=00.8x_1+2x_2+b=0

با حل این رابطه نسبت به (x2) داریم:

2x2=−0.8x1−b2x_2=-0.8x_1-b

در نتیجه:

x2=−0.4x1−b2\boxed{x_2=-0.4x_1-\frac{b}{2}}

این رابطه معادله یک خط مستقیم است.

حالت اول: بایاس برابر با ۵−

با قرار دادن (b=-5):

x2=−0.4x1+2.5x_2=-0.4x_1+2.5

حالت دوم: بایاس برابر با ۳−

با قرار دادن (b=-3):

x2=−0.4x1+1.5x_2=-0.4x_1+1.5

حالت سوم: بایاس برابر با ۱−

با قرار دادن (b=-1):

x2=−0.4x1+0.5x_2=-0.4x_1+0.5

اکنون سه معادله را مقایسه می‌کنیم:

بایاسمعادله مرز تصمیمشیب
۵−(x2=-0.4x1+2.5)۰٫۴−
۳−(x2=-0.4 x1+1.5)۰٫۴−
۱−(x2=-0.4 x1+0.5)۰٫۴−

همان‌طور که مشاهده می‌شود، شیب هر سه خط یکسان است؛ زیرا وزن‌ها تغییر نکرده‌اند.

تنها عرض از مبدأ خطوط تغییر کرده است.

بنابراین، تغییر بایاس موجب جابه‌جایی موازی مرز تصمیم می‌شود، نه تغییر شیب آن.

از دیدگاه هندسی، افزایش بایاس از ۵− به ۱−، مرز تصمیم را به سمتی منتقل می‌کند که تعداد بیشتری از مشاهده‌ها در ناحیه تصمیم مثبت قرار بگیرند.

1.۱۳.۱۱. تفسیر نتایج و ارتباط با مفهوم بایاس

نتایج این مطالعه موردی را می‌توان از سه دیدگاه بررسی کرد.

الف) تأثیر بایاس بر پیش‌فعال‌سازی

در رابطه

z=0.8x1+2x2+bz=0.8x_1+2x_2+b

بایاس مستقیماً به مجموع وزن‌دار ورودی‌ها اضافه می‌شود.

بنابراین، افزایش بایاس به اندازه دو واحد، مقدار پیش‌فعال‌سازی تمام مشاهده‌ها را دقیقاً دو واحد افزایش می‌دهد.

این افزایش برای تمام نمونه‌ها یکسان است، زیرا بایاس به مقدار ورودی‌ها وابسته نیست.

ب) تأثیر بایاس بر خروجی دودویی

اگر افزایش پیش‌فعال‌سازی باعث عبور مقدار (z) از صفر شود، خروجی نورون از صفر به یک تغییر می‌کند.

اما اگر مقدار پیش‌فعال‌سازی همچنان منفی بماند یا از ابتدا مثبت باشد، ممکن است تصمیم نهایی تغییر نکند.

به همین دلیل، در آزمایش حاضر، تغییر بایاس بر تصمیم برخی مشاهده‌ها اثر گذاشته، اما تصمیم تمام مشاهده‌ها را تغییر نداده است.

ج) تأثیر بایاس بر مرز تصمیم

وزن‌ها جهت‌گیری مرز تصمیم را تعیین می‌کنند و بایاس موقعیت آن را تغییر می‌دهد.

در این مطالعه موردی، چون وزن‌ها ثابت هستند، هر سه مرز تصمیم موازی‌اند.

تغییر بایاس باعث می‌شود نمونه‌هایی که قبلاً در ناحیه تصمیم صفر قرار داشتند، وارد ناحیه تصمیم یک شوند.

این موضوع نشان می‌دهد که بایاس می‌تواند حساسیت نورون را نسبت به صدور تصمیم مثبت تغییر دهد.

البته در یک سیستم روشنایی واقعی، صرفاً افزایش تعداد تصمیم‌های مثبت لزوماً مطلوب نیست. برای مثال، ممکن است نورون در نبود فرد نیز فرمان روشن‌شدن چراغ صادر کند. بنابراین، انتخاب بایاس مناسب باید با توجه به هدف سامانه و رفتار مورد انتظار آن انجام شود.

1.۱۳.۱۲. پرسش‌های تحلیلی برای دانشجو

برای بررسی میزان درک مفاهیم، به پرسش‌های زیر پاسخ دهید.

  1. چرا در نمودار این مطالعه موردی، هر سه مرز تصمیم دارای شیب یکسان هستند؟
    1. برای مشاهده‌ای با (x1=5) و (x2=0)، مقدار پیش‌فعال‌سازی و خروجی نورون را برای هر سه مقدار بایاس محاسبه کنید.
    1. اگر وزن‌ها ثابت باشند و بایاس از ۳− به ۱− افزایش یابد، آیا ممکن است خروجی یک مشاهده از یک به صفر تغییر کند؟ پاسخ خود را با استفاده از رابطه پیش‌فعال‌سازی توضیح دهید.
    1. اگر بایاس برابر با ۷− باشد، تعداد تصمیم‌های مثبت در مجموعه ۱۶ مشاهده‌ای چقدر خواهد بود؟ ابتدا به‌صورت دستی محاسبه و سپس با تغییر کد بررسی کنید.
    1. چرا در این مطالعه موردی نمی‌توان از تعداد تصمیم‌های مثبت برای نتیجه‌گیری درباره دقت مدل استفاده کرد؟

این پرسش‌ها دانشجو را تشویق می‌کنند که نتایج برنامه را صرفاً مشاهده نکند، بلکه بتواند آن‌ها را با استفاده از روابط ریاضی توضیح دهد.

1.۱۳.۱۳. جمع‌بندی مطالعه موردی

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

برای بررسی نقش بایاس، ۱۶ مشاهده آموزشی و سه مقدار بایاس در نظر گرفته شد. وزن‌ها و داده‌ها در تمام آزمایش‌ها ثابت باقی ماندند.

نتایج اجرای واقعی برنامه نشان داد که با افزایش بایاس از ۵− به ۱−، تعداد تصمیم‌های مثبت از هفت به پانزده افزایش پیدا کرد و تصمیم هشت مشاهده تغییر یافت.

همچنین بررسی نمودار نشان داد که تغییر بایاس باعث جابه‌جایی موازی مرز تصمیم می‌شود، در حالی که شیب آن ثابت باقی می‌ماند.

نتیجه اصلی این مطالعه موردی آن است که بایاس، با وجود ثابت‌بودن برای تمام ورودی‌ها، می‌تواند رفتار تصمیم‌گیری نورون را به‌طور قابل‌توجهی تغییر دهد. این ویژگی یکی از دلایل اهمیت بایاس در ساختار نورون مصنوعی و مدل‌های شبکه عصبی است.

جمع‌بندی نهایی: بایاس و نقش آن در رفتار نورون مصنوعی

در این فصل آموختیم که نورون مصنوعی برای تصمیم‌گیری تنها به ورودی‌ها و وزن‌های آن‌ها وابسته نیست، بلکه پارامتر دیگری به نام بایاس نیز در تعیین رفتار آن نقش دارد. بایاس یک مقدار ثابت و مستقل از ورودی‌هاست که به مجموع وزن‌دار آن‌ها اضافه می‌شود و مقدار پیش‌فعال‌سازی نورون را تغییر می‌دهد.

رابطه کلی پیش‌فعال‌سازی به‌صورت زیر است:

z=w1x1+w2x2+⋯+wnxn+bz=w_1x_1+w_2x_2+\cdots+w_nx_n+b

در این رابطه، وزن‌ها سهم هر ورودی را در محاسبات مشخص می‌کنند، در حالی که بایاس سطح پایه پیش‌فعال‌سازی را تنظیم می‌کند. به همین دلیل، حتی زمانی که تمام ورودی‌ها صفر باشند، نورون می‌تواند مقدار پیش‌فعال‌سازی غیرصفر داشته باشد.

یکی از مهم‌ترین نتایج این فصل، شناخت ارتباط بایاس با آستانه تصمیم‌گیری بود. در نورونی که از تابع پله‌ای با آستانه صفر استفاده می‌کند، تغییر بایاس می‌تواند باعث شود یک ورودی ثابت، در شرایط مختلف به خروجی‌های متفاوتی منجر شود. بنابراین، بایاس بدون تغییر وزن‌ها یا اطلاعات ورودی، قادر است نتیجه تصمیم‌گیری نورون را تغییر دهد.

از دیدگاه هندسی نیز مشاهده کردیم که بایاس در تعیین موقعیت مرز تصمیم نقش دارد. در حالت یک ورودی، تغییر بایاس محل نقطه عبور از آستانه را جابه‌جا می‌کند. در حالت دو ورودی، با ثابت‌بودن وزن‌ها، تغییر بایاس موجب انتقال موازی خط مرز تصمیم می‌شود، بدون آنکه جهت‌گیری آن تغییر کند. همچنین با بررسی فاصله مرز تصمیم از مبدأ، روشن شد که اثر هندسی بایاس به اندازه بردار وزن‌ها نیز وابسته است.

در ادامه، آموختیم که می‌توان بایاس را با افزودن یک ورودی ثابت برابر با یک، در قالب یک وزن اضافی نمایش داد. این بازنویسی، محاسبات نورون را ساده‌تر و نمایش برداری آن را منسجم‌تر می‌کند. همچنین بررسی مرکزسازی داده‌ها نشان داد که تغییر دستگاه مختصات ورودی، ممکن است برای حفظ رفتار قبلی نورون به تنظیم مجدد بایاس نیاز داشته باشد.

آزمایش‌های عددی و پیاده‌سازی‌های پایتون نیز نشان دادند که تغییر بایاس چگونه بر مقادیر پیش‌فعال‌سازی، خروجی‌های دودویی و موقعیت مرز تصمیم اثر می‌گذارد. در مطالعه موردی سیستم روشنایی هوشمند، با ثابت نگه‌داشتن داده‌ها و وزن‌ها، تغییر بایاس از ۵− به ۱− باعث شد تعداد تصمیم‌های مثبت از ۷ به ۱۵ افزایش یابد و تصمیم ۸ مشاهده تغییر کند. این نتیجه نشان داد که حتی یک پارامتر ثابت می‌تواند رفتار نورون را به‌صورت قابل‌توجهی تغییر دهد.

در مجموع، بایاس یکی از اجزای بنیادی نورون مصنوعی است که انعطاف‌پذیری آن را در تنظیم سطح پایه پاسخ و محل مرز تصمیم افزایش می‌دهد. درک نقش بایاس، زمینه لازم را برای مطالعه دقیق‌تر رفتار نورون‌ها و شبکه‌های عصبی فراهم می‌کند.

Sidebar atefi
دکتر محمدرضا عاطفی

عضو هیئت علمی دانشگاه
رئیس هیئت مدیره گروه ناب
هم بنیان گذار شرکت دانش بنیان
مشاور شرکت ها و سازمان های بزرگ کشور

آنچه می خوانید

COVER compressed 25 300x169
هوش مصنوعی

بایاس در شبکه عصبی چیست و چگونه رفتار نورون مصنوعی را تغییر می‌دهد؟

1. بایاس: چگونه یک پارامتر ثابت، رفتار نورون مصنوعی را تغییر می‌دهد؟ در بخش قبلی، وزن‌ها را به‌عنوان یکی از اجزای بنیادی نورون مصنوعی بررسی کردیم. آموختیم که هر وزن، میزان و جهت تأثیر ورودی متناظر خود را بر مجموع وزن‌دار تعیین می‌کند. همچنین دریافتیم که وزن‌ها علاوه بر نقش

توضیحات بیشتر »
COVER compressed 24 300x169
هوش مصنوعی

وزن در نورون مصنوعی چیست؟ آموزش مفهوم، انواع و محاسبه با پایتون

1. وزن‌ها: چگونه نورون میزان تأثیر هر ورودی را تعیین می‌کند؟ در بخش قبلی، آموختیم که اطلاعات یک مسئله واقعی چگونه به ویژگی‌های عددی تبدیل می‌شوند و چگونه می‌توان ویژگی‌های یک نمونه را در قالب یک بردار ورودی نمایش داد. همچنین تفاوت میان نمونه، ویژگی و مجموعه داده را بررسی

توضیحات بیشتر »
COVER compressed 23 300x169
هوش مصنوعی

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

1. از اطلاعات دنیای واقعی تا ورودی‌های عددی نورون مصنوعی در بخش قبلی، منشأ تاریخی نورون مصنوعی را بررسی کردیم و دیدیم چگونه تلاش برای مدل‌سازی برخی جنبه‌های فعالیت عصبی به پیدایش واحدهای محاسباتی ساده منجر شد. همچنین نشان دادیم که با اختصاص وزن‌های متفاوت به ورودی‌ها و افزودن بایاس،

توضیحات بیشتر »
error: محتوا غیر قابل انتخاب و کپی است.