کد پرسپترون برای طبقه بندی تابع OR :
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
def step_function(x):
if x<0:
return 0
else:
return 1
training_set = [((0, 0), 0), ((0, 1), 1), ((1, 0), 1), ((1, 1), 1)]
# ploting data points using seaborn (Seaborn requires dataframe)
plt.figure(0)
x1 = [training_set[i][0][0] for i in range(4)]
x2 = [training_set[i][0][1] for i in range(4)]
y = [training_set[i][1] for i in range(4)]
df = pd.DataFrame(
{'x1': x1,
'x2': x2,
'y': y
})
sns.lmplot("x1", "x2", data=df, hue='y', fit_reg=False, markers=["o", "s"])
# parameter initialization
w = np.random.rand(2)
errors = []
eta = .5
epoch = 30
b = 0
# Learning
for i in range(epoch):
for x, y in training_set:
# u = np.dot(x , w) +b
u = sum(x*w) + b
error = y - step_function(u)
errors.append(error)
for index, value in enumerate(x):
#print(w[index])
w[index] += eta * error * value
b += eta*error
''' produce all decision boundaries
a = [0,-b/w[1]]
c = [-b/w[0],0]
plt.figure(1)
plt.plot(a,c)
'''
# final decision boundary
a = [0,-b/w[1]]
c = [-b/w[0],0]
plt.plot(a,c)
# ploting errors
plt.figure(2)
plt.ylim([-1,1])
plt.plot(errors)
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
کاربردهای جستجوی باینری(Binary Search):
1️⃣جستجو در آرایه های مرتب شده: جستجوی باینری برای یافتن موثر یک عنصر در یک آرایه مرتب شده استفاده می شود.
2️⃣پرس و جوهای پایگاه داده: جستجوی باینری را می توان برای مکان یابی سریع رکوردها در جدول پایگاه داده که بر اساس یک کلید خاص مرتب شده است استفاده کرد.
3️⃣یافتن نزدیکترین تطابق: جستجوی باینری را می توان برای یافتن نزدیکترین مقدار به مقدار هدف در یک لیست مرتب شده استفاده کرد.
جستجوی درون یابی: جستجوی باینری را می توان به عنوان نقطه شروع برای جستجوی درون یابی استفاده کرد که یک الگوریتم جستجوی سریع تر است.
مزایای جستجوی باینری:
1️⃣کارآمد: جستجوی باینری دارای پیچیدگی زمانی O(log n) است که آن را برای جستجوی آرایه های مرتب شده بزرگ بسیار کارآمد می کند.
2️⃣پیاده سازی ساده: پیاده سازی و درک جستجوی باینری نسبتاً آسان است.
3️⃣همه کاره: جستجوی باینری را می توان در طیف گسترده ای از برنامه ها استفاده کرد.
4️⃣قابل اعتماد: جستجوی باینری یک الگوریتم قابل اعتماد است که در صورت وجود عنصر هدف در آرایه، همیشه آن را پیدا می کند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
1️⃣جستجو در آرایه های مرتب شده: جستجوی باینری برای یافتن موثر یک عنصر در یک آرایه مرتب شده استفاده می شود.
2️⃣پرس و جوهای پایگاه داده: جستجوی باینری را می توان برای مکان یابی سریع رکوردها در جدول پایگاه داده که بر اساس یک کلید خاص مرتب شده است استفاده کرد.
3️⃣یافتن نزدیکترین تطابق: جستجوی باینری را می توان برای یافتن نزدیکترین مقدار به مقدار هدف در یک لیست مرتب شده استفاده کرد.
جستجوی درون یابی: جستجوی باینری را می توان به عنوان نقطه شروع برای جستجوی درون یابی استفاده کرد که یک الگوریتم جستجوی سریع تر است.
مزایای جستجوی باینری:
1️⃣کارآمد: جستجوی باینری دارای پیچیدگی زمانی O(log n) است که آن را برای جستجوی آرایه های مرتب شده بزرگ بسیار کارآمد می کند.
2️⃣پیاده سازی ساده: پیاده سازی و درک جستجوی باینری نسبتاً آسان است.
3️⃣همه کاره: جستجوی باینری را می توان در طیف گسترده ای از برنامه ها استفاده کرد.
4️⃣قابل اعتماد: جستجوی باینری یک الگوریتم قابل اعتماد است که در صورت وجود عنصر هدف در آرایه، همیشه آن را پیدا می کند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍5⚡1
چگونه دو ماتریس را ضرب کنیم؟
برای محاسبه AB، با دانستن اینکه A باید در سمت چپ B باشد، ابتدا باید این کار را انجام دهیم بررسی کنید که ماتریس ها سازگار هستند. ضرب دو ماتریس فقط در صورتی امکان پذیر است که تعداد ستون های A با تعداد ردیف های B برابر باشد.
بنابراین، اگر A یک ماتریس n × m و B یک ماتریس m × k باشد، حاصل ضرب،AB را می توان یافت و یک ماتریس جدید n × k خواهد بود.
برای محاسبه حاصل ضرب، یک سری ضرب ضرب داخلی بین بردارهای ردیف A و بردارهای ستون B انجام می دهیم.
شکل بالا فرآیند یک ماتریس 3×3 A و یک ماتریس 3×2 B را نشان می دهد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
برای محاسبه AB، با دانستن اینکه A باید در سمت چپ B باشد، ابتدا باید این کار را انجام دهیم بررسی کنید که ماتریس ها سازگار هستند. ضرب دو ماتریس فقط در صورتی امکان پذیر است که تعداد ستون های A با تعداد ردیف های B برابر باشد.
بنابراین، اگر A یک ماتریس n × m و B یک ماتریس m × k باشد، حاصل ضرب،AB را می توان یافت و یک ماتریس جدید n × k خواهد بود.
برای محاسبه حاصل ضرب، یک سری ضرب ضرب داخلی بین بردارهای ردیف A و بردارهای ستون B انجام می دهیم.
شکل بالا فرآیند یک ماتریس 3×3 A و یک ماتریس 3×2 B را نشان می دهد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
مسئله ارضای محدودیتها (Constraint Satisfaction Problem - CSP) در هوش مصنوعی به مسائلی اشاره دارد که باید مجموعهای از متغیرها را طوری مقداردهی کنیم که یک سری محدودیتهای از پیش تعریفشده را ارضا کنند. این نوع مسائل در بسیاری از حوزهها از جمله زمانبندی، تخصیص منابع، و حل پازلها کاربرد دارند.
اجزای اصلی یک مسئله ارضای محدودیت
متغیرها (Variables): عناصر اصلی مسئله که باید مقداردهی شوند. به عنوان مثال، در یک مسئله جدول زمانی، هر کلاس درس میتواند یک متغیر باشد.
دامنهها (Domains): مجموعه مقادیر ممکن برای هر متغیر. برای مثال، در مسئله جدول زمانی، دامنه هر کلاس درس میتواند شامل تمام ساعات و روزهای موجود باشد.
محدودیتها (Constraints): شرایطی که مقادیر متغیرها باید رعایت کنند. این محدودیتها میتوانند به صورت روابط بین متغیرها تعریف شوند، مانند "دو کلاس درس نمیتوانند در یک زمان برگزار شوند."
شکل بالا این مسائله را بیان میکند که هیچ منطقه ای با منطقه کناری خودش هم رنگ نمی باشد که در پست های بعدی درمورد شکل بحث خواهیم کرد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
اجزای اصلی یک مسئله ارضای محدودیت
متغیرها (Variables): عناصر اصلی مسئله که باید مقداردهی شوند. به عنوان مثال، در یک مسئله جدول زمانی، هر کلاس درس میتواند یک متغیر باشد.
دامنهها (Domains): مجموعه مقادیر ممکن برای هر متغیر. برای مثال، در مسئله جدول زمانی، دامنه هر کلاس درس میتواند شامل تمام ساعات و روزهای موجود باشد.
محدودیتها (Constraints): شرایطی که مقادیر متغیرها باید رعایت کنند. این محدودیتها میتوانند به صورت روابط بین متغیرها تعریف شوند، مانند "دو کلاس درس نمیتوانند در یک زمان برگزار شوند."
شکل بالا این مسائله را بیان میکند که هیچ منطقه ای با منطقه کناری خودش هم رنگ نمی باشد که در پست های بعدی درمورد شکل بحث خواهیم کرد.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
مرتبه سازی قطعه کد زیر چیست؟
i:=2
while i<=n do begin i:=i^2 x:=x+1 end
i:=2
while i<=n do begin i:=i^2 x:=x+1 end
Anonymous Quiz
39%
log n
29%
log(log n)
13%
n
19%
n log n
🤔8⚡3🙏2
تابع فعالساز ReLU (Rectified Linear Unit) یکی از پرکاربردترین توابع فعالسازی در شبکههای عصبی مصنوعی است که بهویژه در شبکههای عمیق (Deep Learning) بسیار مورد استفاده قرار میگیرد.
تفسیر ساده: خروجی ReLU برای مقادیر مثبت ورودی برابر خود آن مقدار و برای مقادیر منفی صفر است، که تفسیر و درک آن را آسان میکند.
یکی از مشکلات ReLU این است که اگر یک نرون در شبکه مقدار ورودی منفی دریافت کند، خروجی صفر میشود و این نرون دیگر نمیتواند فعال شود و به اصطلاح "مرده" میشود. این مشکل میتواند یادگیری شبکه را تحت تاثیر قرار دهد.
ناپیوستگی در نقطه صفر: تابع ReLU در نقطه صفر ناپیوسته است که میتواند در برخی موارد به مشکلات محاسباتی منجر شود.
ReLU(x)=max(0,x)
قطعه کد زیر این خصوصیت تابع فعال سازی ReLU را نشان میدهد که در شکل بالا نمایش داده شده است :
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
تفسیر ساده: خروجی ReLU برای مقادیر مثبت ورودی برابر خود آن مقدار و برای مقادیر منفی صفر است، که تفسیر و درک آن را آسان میکند.
یکی از مشکلات ReLU این است که اگر یک نرون در شبکه مقدار ورودی منفی دریافت کند، خروجی صفر میشود و این نرون دیگر نمیتواند فعال شود و به اصطلاح "مرده" میشود. این مشکل میتواند یادگیری شبکه را تحت تاثیر قرار دهد.
ناپیوستگی در نقطه صفر: تابع ReLU در نقطه صفر ناپیوسته است که میتواند در برخی موارد به مشکلات محاسباتی منجر شود.
ReLU(x)=max(0,x)
قطعه کد زیر این خصوصیت تابع فعال سازی ReLU را نشان میدهد که در شکل بالا نمایش داده شده است :
from matplotlib import pyplot
def rectified(x):
return max(0.0, x)
series_in = [x for x in range(-10, 11)]
series_out = [rectified(x) for x in series_in]
pyplot.plot(series_in, series_out)
pyplot.show()
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
کمترین مرتبه زمانی الگوریتم پیدا کردن i امین کوچکترین عنصر از میان n عنصـر کـدام است؟
Anonymous Quiz
28%
n
27%
log n
27%
n log n
18%
1
سلام دوستان عزیز👋🏻😉
امیدوارم حالتون خوب باشه. 🌟
اگر در درسهای رشته کامپیوتر نیاز به راهنمایی یا کمک دارین، حتماً از ادمین کمک بگیرین. ادمین کانال ما همیشه آماده پاسخگویی به سوالات شما و ارائه مشاوره هستند.
پس بدون هیچ نگرانی سوالاتتون رو بپرسید و از راهنماییهای مفید ادمینها استفاده کنید. موفق باشید! 💻📚
برای ارتباط با ادمین به آیدی زیر پیام بدید.👇🏻👇🏻
✅ @Se_mohamad
امیدوارم حالتون خوب باشه. 🌟
اگر در درسهای رشته کامپیوتر نیاز به راهنمایی یا کمک دارین، حتماً از ادمین کمک بگیرین. ادمین کانال ما همیشه آماده پاسخگویی به سوالات شما و ارائه مشاوره هستند.
پس بدون هیچ نگرانی سوالاتتون رو بپرسید و از راهنماییهای مفید ادمینها استفاده کنید. موفق باشید! 💻📚
برای ارتباط با ادمین به آیدی زیر پیام بدید.👇🏻👇🏻
✅ @Se_mohamad
🙏12😍1
قانون دلتا(Delta Rule) :
وقتی که مثال ها بصورت خطی جداپذیر نباشند قانون پرسپترون همگرا نخواهد شد. برای غلبه بر این مشکل از قانون دلتا استفاده میشود.
ایده اصلی این قانون استفاده از gradient descent برای جستجو در فضای فرضیه وزن های ممکن میباشد. این قانون پایه روش Back propagation است که برای آموزش شبکه با چندین نرون به هم متصل بکار میرود.
همچنین این روش پایه ای برای انواع الگوریتمهای یادگیری است که باید فضای فرضیه ای شامل فرضیه های مختلف پیوسته را جستجو کنند.
برای درک بهتر این روش آنرا به یک پرسپترون فاقد حد آستانه اعمال میکنیم. در اینجا لازم است ابتدا تعریفی برای خطا ی آموزش ارائه شود. یک تعریف متداول این چنین است:
که این مجموع برای تمام مثال های آموزشی انجام میشود.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
وقتی که مثال ها بصورت خطی جداپذیر نباشند قانون پرسپترون همگرا نخواهد شد. برای غلبه بر این مشکل از قانون دلتا استفاده میشود.
ایده اصلی این قانون استفاده از gradient descent برای جستجو در فضای فرضیه وزن های ممکن میباشد. این قانون پایه روش Back propagation است که برای آموزش شبکه با چندین نرون به هم متصل بکار میرود.
همچنین این روش پایه ای برای انواع الگوریتمهای یادگیری است که باید فضای فرضیه ای شامل فرضیه های مختلف پیوسته را جستجو کنند.
برای درک بهتر این روش آنرا به یک پرسپترون فاقد حد آستانه اعمال میکنیم. در اینجا لازم است ابتدا تعریفی برای خطا ی آموزش ارائه شود. یک تعریف متداول این چنین است:
E = ½ Σi (y – ȳ )^2
که این مجموع برای تمام مثال های آموزشی انجام میشود.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
👍1
عملیات در صف حلقوی:
صف حلقوی یکی از ساختارهای داده است که در آن دادهها به صورت خطی و متمایل به صورت حلقه ذخیره میشوند. این به این معنی است که آخرین عنصر صف به اولین عنصر متصل است، ایجاد میکنند و به آن دسترسی دارند. این ساختار داده معمولاً با استفاده از یک آرایه یا یک لیست پیوندی پیادهسازی میشود.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
صف حلقوی یکی از ساختارهای داده است که در آن دادهها به صورت خطی و متمایل به صورت حلقه ذخیره میشوند. این به این معنی است که آخرین عنصر صف به اولین عنصر متصل است، ایجاد میکنند و به آن دسترسی دارند. این ساختار داده معمولاً با استفاده از یک آرایه یا یک لیست پیوندی پیادهسازی میشود.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
👍2
درستی یا نادرستی گزاره هاي زیر کدام است؟
الف)از میان n نقطه در صفحه، میتوان نزدیکترین 1/2^n نقطه به مبدأ را در زمان (n(O بـه دسـت آورد. ب) مرتب سازي 6 عنصر با الگوریتم هاي مبتنی بر مقایسه حداقل به 10 مقایسه در بـدترین حالت نیاز دارد.
الف)از میان n نقطه در صفحه، میتوان نزدیکترین 1/2^n نقطه به مبدأ را در زمان (n(O بـه دسـت آورد. ب) مرتب سازي 6 عنصر با الگوریتم هاي مبتنی بر مقایسه حداقل به 10 مقایسه در بـدترین حالت نیاز دارد.
Anonymous Quiz
36%
الف)درست ، ب)نادرست
29%
الف)نادرست ، ب)درست
18%
الف)نادرست ، ب)نادرست
16%
الف)درست ، ب)درست
Overfitting (بیشبرازش) :
- توضیح: مدل بیش از حد به جزئیات و نویز دادههای آموزشی حساس میشود.
- نتیجه: عملکرد عالی روی دادههای آموزشی، عملکرد ضعیف روی دادههای جدید.
- راهحل: کاهش پیچیدگی مدل، افزایش دادههای آموزشی، استفاده از اعتبارسنجی متقابل.
Underfitting (کمبرازش) :
- توضیح: مدل به اندازه کافی پیچیده نیست تا الگوهای موجود در دادهها را یاد بگیرد.
- نتیجه: عملکرد ضعیف روی دادههای آموزشی و دادههای جدید.
- راهحل: افزایش پیچیدگی مدل، اضافه کردن ویژگیهای بیشتر، کاهش نویز دادهها.
Balanced (متعادل) :
- توضیح: مدل به خوبی در هر دو دادههای آموزشی و جدید عمل میکند.
- نتیجه: عملکرد مناسب و تعمیمپذیری خوب.
- راهحل: تنظیم پیچیدگی مدل، استفاده از روشهای کاهش پیچیدگی با انتخاب مناسب، تنظیم مکرر پارامترها.
#پاسخ_تشریحی
📣👨💻 @AlgorithmDesign_DataStructuer
- توضیح: مدل بیش از حد به جزئیات و نویز دادههای آموزشی حساس میشود.
- نتیجه: عملکرد عالی روی دادههای آموزشی، عملکرد ضعیف روی دادههای جدید.
- راهحل: کاهش پیچیدگی مدل، افزایش دادههای آموزشی، استفاده از اعتبارسنجی متقابل.
Underfitting (کمبرازش) :
- توضیح: مدل به اندازه کافی پیچیده نیست تا الگوهای موجود در دادهها را یاد بگیرد.
- نتیجه: عملکرد ضعیف روی دادههای آموزشی و دادههای جدید.
- راهحل: افزایش پیچیدگی مدل، اضافه کردن ویژگیهای بیشتر، کاهش نویز دادهها.
Balanced (متعادل) :
- توضیح: مدل به خوبی در هر دو دادههای آموزشی و جدید عمل میکند.
- نتیجه: عملکرد مناسب و تعمیمپذیری خوب.
- راهحل: تنظیم پیچیدگی مدل، استفاده از روشهای کاهش پیچیدگی با انتخاب مناسب، تنظیم مکرر پارامترها.
#پاسخ_تشریحی
📣👨💻 @AlgorithmDesign_DataStructuer
👌2👍1
لیست های همجوار :
برای نمایش گراف ها میتوانیم از لیست های همجواری استفاده کنیم . بدینصورت که آرایهای به تعداد
گـرههـای گـراف ایجاد میکنیم. هر عنصر این آرایه اشاره گری است به ابتدای یک لیست پیوندی . این
لیست پیوندی شامل گرههایی است که به گره متناظر با عنصر آرایه متصل اند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
برای نمایش گراف ها میتوانیم از لیست های همجواری استفاده کنیم . بدینصورت که آرایهای به تعداد
گـرههـای گـراف ایجاد میکنیم. هر عنصر این آرایه اشاره گری است به ابتدای یک لیست پیوندی . این
لیست پیوندی شامل گرههایی است که به گره متناظر با عنصر آرایه متصل اند.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)
def forward(self, x):
x = F.relu(self.fc1(x))
x = self.fc2(x)
return x
در این قسمت، ما یک مدل شبکه عصبی ساده را تعریف میکنیم:
تعریف کلاس SimpleModel:
این کلاس از nn.Module ارثبری میکند که کلاس پایه برای تمام مدلهای PyTorch است.
متد init برای تنظیم اجزای مدل استفاده میشود. در اینجا، ما دو لایه تماموصل (fully connected) را تعریف میکنیم:
self.fc1 = nn.Linear(10, 5):
یک لایه خطی که ۱۰ ورودی را به ۵ خروجی تبدیل میکند.
self.fc2 = nn.Linear(5, 2):
یک لایه خطی که ۵ ورودی را به ۲ خروجی تبدیل میکند.
super(SimpleModel, self).init()
فراخوانی میشود تا سازنده کلاس پایه (nn.Module) نیز اجرا شود.
تعریف متد forward:
متد forward مشخص میکند که چگونه دادهها از طریق شبکه عبور کنند.
x = F.relu(self.fc1(x)):
ورودی x ابتدا از طریق اولین لایه خطی (fc1) عبور میکند، سپس تابع فعالسازی ReLU بر روی خروجی اعمال میشود.
x = self.fc2(x):
خروجی مرحله قبلی به عنوان ورودی به دومین لایه خطی (fc2) داده میشود.
در نهایت، خروجی از متد forward بازگشت داده میشود.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
اگر دنباله درجه یک گراف بدون جهت 2 و 2 و 3 و 3 و 3 و 3 باشد در آن صـورت تعـداد یال هاي پشتی ( back edge )این گراف در جستجوي DFS برابر است با:
Anonymous Quiz
17%
2
50%
3
25%
4
8%
5
مثالی در مورد پیمایش های درخت که به صورت Preorder , Postorder و Inorder می باشد.
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
#الگوریتم
📣👨💻 @AlgorithmDesign_DataStructuer
Math in machine learning@AlgorithmDesign_DataStructuer.rar
13.3 MB
📚معرفی یک جزوه عالی برای کسانی که تازه میخواهند یادگیری ماشین را شروع کنند و در ریاضی ضعیف هستند.
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
#هوش_مصنوعی
📣👨💻 @AlgorithmDesign_DataStructuer
🙏3💯2😍1