کدنویسی اولین نورون ها
در حالی که فرض می کنیم همه ما در اینجا فراتر از برنامه نویسان مبتدی هستیم، باز هم سعی می کنیم به آرامی شروع کنیم و اولین باری که آنها را می بینیم چیزها را توضیح دهیم. برای شروع، ما از پایتون 3.7 استفاده خواهیم کرد (اگرچه هر نسخه ای از پایتون 3+ احتمالا کار خواهد کرد). ما همچنین پس از نمایش متدهای خالص پایتون از NumPy و Matplotlib برای برخی مصورسازی ها استفاده خواهیم کرد. باید اینطور باشد که نسخه های بسیار متنوعی باید کار کنند، اما ممکن است بخواهید دقیقا با نسخه ما مطابقت داشته باشید تا مشکلات نسخه را رد کنید. به طور خاص، ما از موارد زیر استفاده می کنیم:
پایتون 3.7.5
شماره Py 1.15.0
Matplotlib 3.1.1
از آنجایی که این یک کتاب شبکه های عصبی از ابتدا در پایتون است، ما نحوه انجام کارها را بدون NumPy نیز نشان خواهیم داد، اما NumPy پکیج همه چیز-اعداد پایتون است. ساختن از ابتدا نکته این کتاب است، اگرچه نادیده گرفتن NumPy یک ضرر خواهد بود زیرا یکی از مهم ترین، اگر نگوییم مهمترین، و مفیدترین بسته ها برای علم داده در پایتون است.
یک نورون تنها
فرض کنید ما یک نورون واحد داریم و سه ورودی برای این نورون وجود دارد. همانطور که در بیشتر موارد، هنگامی که پارامترها را در شبکه های عصبی راه اندازی می کنید، شبکه ما دارای وزن هایی است که به طور تصادفی مقداردهی اولیه می شوند و بایاس ها برای شروع صفر تنظیم می شوند. اینکه چرا این کار را انجام می دهیم بعدا آشکار خواهد شد. ورودی یا داده های آموزشی واقعی یا خروجی نورون ها از لایه قبلی در شبکه عصبی خواهد بود. ما فقط می خواهیم مقادیری را بسازیم که فعلا با آنها به عنوان ورودی شروع کنیم:
ورودی ها = [1، 2، 3]
هر ورودی همچنین به وزنی مرتبط با آن نیاز دارد. ورودی ها داده هایی هستند که ما برای به دست آوردن خروجی های دلخواه به مدل منتقل می کنیم، در حالی که وزن ها پارامترهایی هستند که بعدا برای به دست آوردن این نتایج تنظیم خواهیم کرد. وزن ها یکی از انواع مقادیری هستند که در مرحله آموزش در داخل مدل تغییر می کنند، همراه با سوگیری هایی که در طول آموزش نیز تغییر می کنند. مقادیر وزن ها و تعصبات همان چیزی است که "آموزش داده می شود" و آنها همان چیزی هستند که باعث می شوند یک مدل واقعا کار کند (یا کار نکند). فعلا با جبران وزنه شروع می کنیم. فرض کنید ورودی اول، در شاخص 0، که 1 است، دارای وزن 0.2، ورودی دوم دارای وزن 0.8 و ورودی سوم دارای وزن -0.5 است. لیست ورودی ها و وزن های ما اکنون باید به صورت زیر باشد:
ورودی ها = [1، 2، 3]
وزن = [0.2، 0.8، -0.5]
در مرحله بعد، ما به تعصب نیاز داریم. در حال حاضر، ما در حال مدل سازی یک نورون با سه ورودی هستیم. از آنجایی که ما در حال مدل سازی یک نورون هستیم، فقط یک سوگیری داریم، زیرا برای هر نورون فقط یک مقدار سوگیری وجود دارد. بایاس یک مقدار قابل تنظیم اضافی است اما در مقایسه با وزن ها با هیچ ورودی مرتبط نیست. ما به طور تصادفی مقدار 2 را به عنوان بایاس برای این مثال انتخاب می کنیم:
inputs = [1, 2, 3]
weights = [0.2, 0.8, -0.5]
bias = 2
این نورون هر ورودی ضرب در وزن آن ورودی را جمع می کند، سپس بایاس را اضافه می کند. تنها کاری که نورون انجام می دهد این است که کسری ورودی ها را می گیرد، جایی که این کسرها (وزن ها) پارامترهای قابل تنظیم هستند، و پارامتر قابل تنظیم دیگری - بایاس - اضافه می کند و سپس نتیجه را خروجی می دهد. خروجی ما تا این نقطه محاسبه می شود:
خروجی = (ورودی ها[0]وزن ها[0] + ورودی ها[1]وزن ها[1] +
ورودی ها[2]*وزنها[2] + bias)
چاپ (خروجی)
>
2.3
خروجی در اینجا باید 2.3 باشد. ما از >>> برای نشان دادن خروجی در این کتاب استفاده خواهیم کرد.
