You are on page 1of 64

‫‪2/8/2019‬‬

‫قسمت اول‪:‬‬
‫مقدمه ای بر شبکههای عصبی و‬
‫شبکه های عصبی کانولوشنالی در‬

‫‪Keras‬‬ ‫کتابخانه‬
‫‪Alireza Akhavanpour‬‬
‫‪Akhavanpour.ir‬‬
‫‪CLASS.VISION‬‬
‫‪Thursday, February 7, 2019‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫چشم انداز دوره‪:‬‬

‫‪۶‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪1‬‬
‫‪2/8/2019‬‬

‫‪‬مقدمه‪:‬‬
‫مقدمه ‪ :1‬مقدمهای بر یادگیری ماشین‬ ‫•‬
‫مقدمه ‪ :2‬تصویر به عنوان داده‬ ‫•‬
‫مقدمه ‪ :3‬طبقه بندی تصویر در پایتون‬ ‫•‬

‫‪‬شبکههای عصبی‪:‬‬
‫بخش ‪ :1‬مقدمهای بر پرسپترون‬ ‫•‬
‫بخش ‪ :2‬مقدمهای بر شبکههای عصبی‬ ‫•‬
‫بخش ‪ :3‬تابع هزینه‬ ‫•‬
‫بخش ‪ :4‬پسانتشار خطا و گرادیان کاهشی‬ ‫•‬

‫‪‬پیاده سازی در ‪:Keras‬‬


‫بخش ‪ :5‬پیاده سازی طبقه بندی اعداد فارسی در کراس‬ ‫•‬
‫بخش ‪ :6‬شبکه های عصبی کانولوشنالی‬ ‫•‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمه ‪:1‬‬

‫مقدمهای بر یادگیری ماشین‬

‫‪Introduction to Machine‬‬
‫‪Learning‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪2‬‬
2/8/2019

Image Classification: a core task in Computer Vision

(assume given set of discrete labels)


{dog, cat, truck, plane, ...}

cat

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

Challenges: Illumination

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

3
‫‪2/8/2019‬‬

‫‪Challenges: Deformation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪Challenges: Occlusion‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪4‬‬
‫‪2/8/2019‬‬

‫‪Challenges: Background clutter‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪Challenges: Intraclass variation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪5‬‬
2/8/2019

An image classifier

Unlike e.g. sorting a list of numbers,

no obvious way to hard-code the algorithm for


recognizing a cat, or other classes.

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

Data-driven approach:
1. Collect a dataset of images and labels
2. Use Machine Learning to train an image classifier
3. Evaluate the classifier on a withheld set of test images

Example training set

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

6
2/8/2019

) ‫ (یادگیری نظارت شده‬Supervised Learning

● Supervised Learning uses labeled data to


predict a label given some features.
● If the label is continuous its called a
regression problem, if its categorical it is a
classification problem.

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

‫یادگیری نظارت شده – طبقه بندی‬

:classification ‫ طبقه بندی یا‬


‫ قد و وزن‬: feature 
‫ جنسیت‬:label 
:‫ هدف‬
‫ تشخیص جنسیت از روی قد و وزن‬

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

7
‫‪2/8/2019‬‬

‫یادگیری نظارت شده – طبقه بندی‬

‫?‬
‫‪Male‬‬
‫‪Heigh‬‬
‫‪t‬‬ ‫‪Female‬‬

‫‪Weigh‬‬
‫‪t‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫یادگیری نظارت شده – طبقه بندی‬

‫‪Male‬‬
‫‪Heigh‬‬
‫‪t‬‬ ‫‪Female‬‬

‫‪Weigh‬‬
‫‪t‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪8‬‬
‫‪2/8/2019‬‬

‫طبقه بندی‪ :‬الگوریتم نزدیکترین همسایه‬

‫‪ 1-Nearest Neighbor‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫طبقه بندی‪ :‬الگوریتم نزدیکترین همسایه‬

‫‪ 3-Nearest Neighbor‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪9‬‬
‫‪2/8/2019‬‬

‫رگرسیون‬
‫‪y‬‬
‫)‪Price ($‬‬

‫)‪Square feet (sq.ft.‬‬ ‫‪x‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمه ‪:2‬‬

‫تصویر به عنوان داده‬

‫‪Images as data‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪10‬‬
‫‪2/8/2019‬‬

‫تصویر به عنوان داده‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫تصویر به عنوان داده‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪11‬‬
‫‪2/8/2019‬‬

‫آشنایی با تصویر در پایتون‬

‫…‪Let’s code‬‬

‫‪01_Intro2image&numpy.ipynb‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫مقدمه ‪:3‬‬

‫طبقه بندی تصویر در پایتون‬

‫‪Image classification in Python‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪12‬‬
‫‪2/8/2019‬‬

‫طبقهبندی تصویر‪ :‬آموزش (‪)Training‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫طبقهبندی تصویر‪ :‬ارزیابی (‪)Evaluation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪13‬‬
2/8/2019

Representing class data: one-hot encoding

labels = ["shoe", "dress", "shoe", "t-shirt",


"shoe", "t-shirt", "shoe", "dress"]
t-shirt dress shoe

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

One-hot encoding: testing predictions

Test prediction

=6.0
Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬
‫علیرضا اخوان پور‬

14
‫‪2/8/2019‬‬

‫طبقهبندی تصویر‪:‬‬

‫))‪X = resize(img, (5, 5‬‬

‫)‪X.reshape(25‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫معرفی مجموعه داده هدی و تغییر اندازه و شکل برای استفاده در‬
‫الگوریتمهای یادگیری ماشین‬

‫…‪Let’s code‬‬

‫‪02_HodaDataset.ipynb‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫‪15‬‬
2/8/2019

‫ نزدیکترین همسایه‬K ‫طبقه بندی نزدیکترین همسایه و‬


scikit-learn ‫در‬

Let’s code…

03_K-Nearest Neighbor classification.ipynb


Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬
‫علیرضا اخوان پور‬

k-Nearest Neighbor on images never used.


- terrible performance at test time
- distance metrics on level of whole images can be
very unintuitive

(all 3 images have same L2 distance to the one on the left)

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

16
‫‪2/8/2019‬‬

‫مقدمهای بر شبکههای عصبی‬

‫○‬ ‫‪Neurons and Activation‬‬


‫‪Functions‬‬
‫○‬ ‫‪Cost Functions‬‬
‫○‬ ‫‪Gradient Descent‬‬
‫○‬ ‫‪Backpropagation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫بخش اول‪:‬‬

‫مقدمهای بر پرسپترون‬

‫‪Introduction to the Perceptron‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪17‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ The‬‬ ‫‪biological neuron:‬‬

‫‪Dendrites‬‬ ‫‪Body‬‬ ‫‪Axon‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬نرونهای مصنوعی هم ورودی و خروجی دارند‬


‫‪ ‬این مدل ساده را پرسپترون مینامند‪.‬‬

‫‪Input 0‬‬

‫‪Output‬‬

‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪18‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ ‬ورودی مقادیر ویژگیها (‪ )features‬هستند‬

‫‪12‬‬
‫‪Input 0‬‬

‫‪Output‬‬

‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬ورودیها در وزنها ضرب میشوند‬

‫‪12‬‬
‫‪Input 0‬‬

‫‪Output‬‬

‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪19‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ ‬وزنها به صورت تصادفی و رندم مقداردهی اولیه میشوند‬

‫‪12‬‬
‫‪Input 0‬‬

‫‪Output‬‬

‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬ورودیها در وزنهای متناظر ضرب میشوند‬

‫‪12‬‬ ‫‪12‬‬ ‫‪* 0.5 = 6‬‬


‫‪Input 0‬‬

‫‪Output‬‬

‫‪4‬‬
‫‪Input 1‬‬
‫‪4 * -1 = -4‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫‪20‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ ‬یک تابع فعالیت بر روی نتایج اعمال میگردد‬

‫‪12‬‬
‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Output‬‬
‫‪Function‬‬
‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬انتخابهای زیادی برای تابع فعالیت داریم‬


‫‪ ‬ساده ترین تابع فعالیت‪:‬‬
‫‪ ‬اگر مجموع مثبت بود ‪1 :‬‬
‫‪12‬‬ ‫‪ ‬در غیر این صورت ‪0‬‬
‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Output‬‬
‫‪Function‬‬
‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪21‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ ‬در این مثال داریم‪:‬‬


‫‪6–4=2‬‬
‫پس خروجی برابر است با ‪1‬‬
‫‪12‬‬
‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Output‬‬
‫‪Function‬‬
‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬یک مشکل! اگر ورودی ‪ 0‬باشد؟!‬


‫‪ ‬مستقل از وزنها خروجی ‪ 0‬میشود!‬

‫‪12‬‬
‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Output‬‬
‫‪Function‬‬
‫‪4‬‬
‫‪Input 1‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪22‬‬
‫‪2/8/2019‬‬

‫پرسپترون‬

‫‪ ‬این مشکل را با افزودن بایاس رفع میکنیم‪.‬‬

‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Function‬‬ ‫‪Output‬‬
‫‪Input 1‬‬

‫‪Bias‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پرسپترون‬

‫‪ ‬اگر بخواهیم پرسپترون را به صورت ریاضی بنویسیم‪...‬‬

‫‪Input 0‬‬
‫‪Activation‬‬
‫‪Function‬‬ ‫‪Output‬‬
‫‪Input 1‬‬

‫‪Bias‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪23‬‬
‫‪2/8/2019‬‬

‫آنچه در بخش اول دیدیم‪...‬‬

‫‪○ Biological Neuron‬‬


‫‪○ Perceptron Model‬‬
‫‪○ Mathematical Representation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫بخش دوم‪:‬‬

‫مقدمهای بر شبکههای عصبی‬

‫‪Introduction to Neural Networks‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪24‬‬
‫‪2/8/2019‬‬

‫مقدمهای بر شبکههای عصبی‬

‫‪ ‬شبکهای از چندین پرسپترون‬

‫‪Input Layer.‬‬ ‫‪2 hidden layers.‬‬ ‫‪Output Layer‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمهای بر شبکههای عصبی – الیهها‬

‫‪ ‬الیه ورودی‪:‬‬
‫‪ ‬مقادیر حقیقی دادهها‬
‫‪ ‬الیه پنهان‪:‬‬
‫‪ ‬الیه های بین ورودی و خروجی‬
‫‪ ‬به ‪ 3‬یا بیشتر الیه معموال شبکه عمیق میگوییم‪.‬‬
‫‪ ‬الیه خروجی‪:‬‬
‫‪ ‬تخمین نهایی شبکه از خروجی است‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫‪25‬‬
‫‪2/8/2019‬‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫‪ ‬تابع فعالیت ساده ای که تا کنون دیدیم‬


‫‪1‬‬
‫‪Output‬‬

‫‪0‬‬
‫‪0‬‬
‫‪z = wx + b‬‬
‫‪ ‬تغییرات کوچک منعکس نمی شوند‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫‪ ‬اگر تابعی پویاتر داشتیم بهتر میشد‪ ،‬مثل تابع قرمز رنگ!‬

‫‪1‬‬
‫‪Output‬‬

‫‪0‬‬
‫‪0‬‬
‫‪z = wx + b‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪26‬‬
‫‪2/8/2019‬‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫‪ ‬تابع سیگموئید‬
‫‪1‬‬
‫‪Output‬‬

‫‪0‬‬
‫‪0‬‬
‫‪z = wx + b‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫‪ ‬بسته به کار ممکن است از توابع فعالیت متفاوتی استفاده کنیم‬


‫‪ ‬توابع فعالیتی که ممکن است با آنها رو به رو شویم را ببینیم ‪...‬‬

‫‪1‬‬
‫‪Output‬‬

‫‪0‬‬
‫‪0‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪z = wx + b‬‬
‫علیرضا اخوان پور‬

‫‪27‬‬
‫‪2/8/2019‬‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫)‪● Hyperbolic Tangent: tanh(z‬‬

‫‪1‬‬
‫‪Output‬‬

‫‪-1‬‬
‫‪0‬‬
‫‪z = wx + b‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫مقدمهای بر شبکههای عصبی – تابع فعالیت‬

‫‪ - ReLU ‬واحد یکسوساز خطی‬


‫‪● Rectified Linear Unit‬‬

‫‪Output‬‬ ‫)‪max(0,z‬‬

‫‪0‬‬
‫‪z = wx + b‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪28‬‬
‫‪2/8/2019‬‬

‫بخش سوم‪:‬‬

‫تابع هزینه‬

‫‪Cost Function‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫تابع هزینه‬

‫‪ ‬معیاری برای اندازه گیری بد بودن مدل!‬


‫بد بودن؟! تفاوت خروجی مدل با خروجی مورد انتظار‬
‫‪ ‬از عالئم و متغیرهای زیر استفاده میکنیم‪:‬‬
‫’‪ :Y‬نمایانگر خروجی مورد انتظار (‪)true value‬‬
‫‪ : Y‬تخمین حاصل از خروجی شبکه‬
‫‪ ‬محاسبه ‪ a‬از وزنها و بایاس‬
‫‪○ w*x + b = z‬‬
‫‪○ σ(z) = y => Pass z into activation function‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫‪29‬‬
‫‪2/8/2019‬‬

‫تابع هزینه‬

‫‪ ‬تابع هزینه ساده برای طبقهبندی‪:‬‬


‫=‪C‬‬ ‫‪Σ(y’-y)2‬‬ ‫‪/n‬‬
‫‪ ‬خطاهای بزرگتر به علت توان ‪ ، 2‬برجسته تر هستند‪.‬‬

‫‪ ‬این تابع خطا فرآیند آموزش را کند میکند‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫تابع هزینه‬

‫‪Cross Entropy ‬‬


‫=‪C‬‬

‫‪ ‬این تابع اجازه میدهد که آموزش تسریع شود‪.‬‬

‫‪ ‬هر چه تفاوت بزرگتر باشد‪ ،‬سریعتر نورون می تواند یاد بگیرد‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪30‬‬
‫‪2/8/2019‬‬

‫تابع هزینه‬
‫‪Cross Entropy ‬‬

‫‪𝒚′‬‬

‫)‪Log (x‬‬
‫𝒚‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫تابع هزینه‬

‫‪ ‬تا االن با ‪ 2‬جنبه کلیدی یادگیری شبکه های عصبی آشنا شدیم‪:‬‬
‫‪ ‬نورون ها با تابع فعالیت‬
‫‪ ‬تابع هزینه‬
‫‪ ‬ما هنوز یک گام کلیدی را کم داریم! "یادگیری"!‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪31‬‬
‫‪2/8/2019‬‬

‫بخش چهارم‪:‬‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪Gradient Descent and Backpropagation‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬گرادیان کاهشی یا ‪Gradient descent‬‬


‫‪ ‬یک الگوریتم بهینه سازی برای یافتن حداقل یک تابع است‪.‬‬

‫‪ ‬برای یافتن کمینهی محلی یک تابع با استفاده از این الگوریتم‪،‬‬


‫گامهایی متناسب با منفی گرادیان تابع در محل فعلی برداشته خواهد شد‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪32‬‬
‫‪2/8/2019‬‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬گرادیان کاهشی(در یک بعد)‬


‫)‪ Gradient Descent (in 1 dimension‬‬

‫‪C‬‬
‫‪C‬‬

‫‪w‬‬
‫‪w‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬گرادیان کاهشی(در یک بعد)‬


‫)‪ Gradient Descent (in 1 dimension‬‬

‫‪C‬‬
‫‪C‬‬

‫‪w‬‬
‫‪w‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫‪33‬‬
‫‪2/8/2019‬‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬به صورت بصری می توانیم مقدار انتخابی برای به حداقل رساندن‬


‫هزینه را ببینیم!‬

‫‪C‬‬
‫‪C‬‬

‫‪w‬‬
‫‪w‬‬
‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬
‫علیرضا اخوان پور‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬پیدا کردن این کمینه برای ‪ 1‬بعد ساده است‪ ،‬اما تقریبا تماام مساائل ماا‬
‫دارای پارامترهای زیادی است‪ ،‬به این معنی که ماا بایاد از جبار خطای‬
‫‪ built-in‬در کتابخانه یادگیری عمیق استفاده کنیم‪.‬‬
‫‪ ‬با استفاده از گرادیان کاهشی میتوانیم بهتارین پارامترهاا را بارای باه‬
‫حداقل رساندن تابع هزینه بدست آوریم‪ ،‬به عنوان مثاال‪ ،‬پیادا کاردن‬
‫بهترین مقادیر برای وزن ورودیهای نورون‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪34‬‬
‫‪2/8/2019‬‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬حاال ما فقط یک مسئله برای حل کردن داریم‪ ،‬چگونه میتاوانیم‬


‫پارامترهای مطلوب یا وزنها را در کل شبکه تنظیم کنیم؟‬

‫‪ ‬اینجاست که پسانتشار خطا یا ‪ backpropagation‬مطرح‬


‫میشود‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬پسانتشار خطا برای محاسبه سهم خطاای هار ناورون پاس از‬
‫پردازش یک دسته از داده ها استفاده می شود‪.‬‬
‫‪ ‬این روش به شدت بر قاعده زنجیری برای پیدا کردن مشاتق یاا‬
‫‪ chain rule‬تکیه می کند تا از طریق شبکه عقب برود و ایان‬
‫خطاها را محاسبه کند‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪35‬‬
‫‪2/8/2019‬‬

‫پسانتشار خطا و گرادیان کاهشی‬

‫‪ ‬پسانتشار خطا با محاسبه خطای خروجی و با بازگشت الیاه باه‬


‫الیه از خروجی به سمت ورودی انجام می دهد‪.‬‬

‫‪ ‬برای هر مقدار ورودی نیاز به یاک خروجای ماورد انتظاار دارد‬


‫(یادگیری نظارت شده)‪.‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪playground.tensorflow.org‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪36‬‬
‫‪2/8/2019‬‬

‫بخش پنجم‪:‬‬

‫پیاده سازی در کراس‬

‫!‪Implementation with Keras‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پیاده سازی در کراس‪ -‬معماری مدل‬

‫‪5x5‬‬

‫‪Relu‬‬
‫‪64 Neurons Softmax‬‬

‫‪0‬‬
‫‪1‬‬
‫‪25 pixels‬‬

‫‪2‬‬

‫‪9‬‬

‫‪37‬‬
‫‪2/8/2019‬‬

‫پیاده سازی در کراس – تابع هزینه و بهینه سازی‬

‫پیاده سازی در کراس‪:‬‬


‫تعیین داده آموزشی‪ ،‬اندازه ‪ mini-batch‬و تعداد ‪epoch‬‬

‫‪C‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪w‬‬


‫علیرضا اخوان پور‬

‫‪38‬‬
‫‪2/8/2019‬‬

‫پیاده سازی در کراس‪:‬‬


‫تعیین داده آموزشی‪ ،‬اندازه ‪ mini-batch‬و تعداد ‪epoch‬‬

‫‪C‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪w‬‬


‫علیرضا اخوان پور‬

‫پیاده سازی در کراس‪:‬‬


‫تعیین داده آموزشی‪ ،‬اندازه ‪ mini-batch‬و تعداد ‪epoch‬‬

‫‪C‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪w‬‬


‫علیرضا اخوان پور‬

‫‪39‬‬
‫‪2/8/2019‬‬

‫پیاده سازی در کراس‪:‬‬


‫تعیین داده آموزشی‪ ،‬اندازه ‪ mini-batch‬و تعداد ‪epoch‬‬

‫‪C‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪w‬‬


‫علیرضا اخوان پور‬

‫پیاده سازی در کراس‪:‬‬


‫تعیین داده آموزشی‪ ،‬اندازه ‪ mini-batch‬و تعداد ‪epoch‬‬

‫‪C‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬ ‫‪w‬‬


‫علیرضا اخوان پور‬

‫‪40‬‬
‫‪2/8/2019‬‬

‫پیاده سازی شبکه عصبی در کراس – ارقام فارسی‬

‫…‪Let’s code‬‬

‫‪04_a Gentle Introduction to Keras - Simple neural network(mlp).ipynb‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫پیاده سازی در کراس‪ -‬بیش برازش‬

‫‪41‬‬
2/8/2019

Dropout -‫پیاده سازی در کراس‬

x x

x x x

x x

Main Idea: approximately


combining exponentially many
different neural network
architectures efficiently

Srivastava, Hinton, Krizhevsky, Sutskever & Salakhutdinov, JMLR (2014)

‫ در کراس‬Dropout ‫بیش برازش دادهها و الیهی‬

Let’s code…

05_Dropout.ipynb
Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬
‫علیرضا اخوان پور‬

42
2/8/2019

:‫بخش ششم‬

‫شبکه های عصبی کانولوشنالی‬

Convolutional Neural Networks

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

“sandwich” architecture (SCSCSC…)


simple cells: modifiable parameters
A bit of history: complex cells: perform pooling

Neurocognitron
[Fukushima 1980]

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

43
‫‪2/8/2019‬‬

‫‪A bit of history:‬‬


‫‪Gradient-based learning applied to document‬‬
‫‪recognition‬‬
‫]‪[LeCun, Bottou, Bengio, Haffner 1998‬‬

‫‪LeNet-5‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫بعد از ‪...2012‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪44‬‬
‫‪2/8/2019‬‬

‫شهود لزوم سلسله مراتب و عمق شبکه‬

‫‪𝑦ො‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫شهود لزوم سلسله مراتب و عمق شبکه‬


‫‪[From recent Yann‬‬
‫]‪LeCun slides‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫‪45‬‬
‫‪2/8/2019‬‬

‫شهود لزوم سلسله مراتب و عمق شبکه‬


‫‪[From recent Yann‬‬
‫]‪LeCun slides‬‬

‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی ‪Keras‬‬


‫علیرضا اخوان پور‬

‫یادگیری عمیق و تصاویر بزرگ‬


‫)‪Cat? (0/1‬‬
‫‪3bilion‬‬
‫‪64x64x3‬‬
‫‪=12288‬‬ ‫‪3m‬‬ ‫‪1000‬‬
‫‪𝑥1‬‬
‫‪𝑥2‬‬
‫⋮‬ ‫⋮‬ ‫⋮‬ ‫‪𝑦ො‬‬
‫𝑛𝑥‬
‫‪1000x1000x3‬‬
‫‪=3000000 = 3m‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪46‬‬
‫‪2/8/2019‬‬

‫مقدمات ‪ – convolution‬فیلتر ‪edge detection‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬

‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫مقدمات ‪ – convolution‬لبهیابی‬
‫‪1‬‬ ‫‪10‬‬ ‫‪-1‬‬
‫‪10‬‬ ‫‪10‬‬
‫‪-1‬‬ ‫‪-1‬‬
‫‪0‬‬ ‫‪-1‬‬
‫‪3‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪7‬‬ ‫‪4‬‬
‫‪1‬‬ ‫‪10‬‬ ‫‪10‬‬
‫‪-1‬‬ ‫‪10‬‬
‫‪-1‬‬ ‫‪0‬‬
‫‪-1‬‬ ‫‪-1‬‬
‫‪1‬‬ ‫‪5‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬ ‫‪-5 -4‬‬ ‫‪0‬‬ ‫‪8‬‬
‫‪1‬‬
‫‪1‬‬ ‫‪110‬‬ ‫‪110‬‬
‫‪-1‬‬ ‫‪100‬‬
‫‪-1‬‬ ‫‪-1‬‬
‫‪-1‬‬
‫‪0‬‬ ‫‪-1‬‬
‫‪2‬‬ ‫‪7‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬ ‫‪-10 -2‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪10‬‬
‫‪3‬‬
‫‪-1‬‬
‫‪10‬‬
‫‪1‬‬
‫‪0‬‬
‫‪-1‬‬
‫‪7‬‬
‫‪-1‬‬
‫‪8‬‬
‫∗‬ ‫=‬
‫‪1‬‬ ‫‪0‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪-2 -4‬‬ ‫‪-7‬‬
‫‪4‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪2‬‬ ‫‪8‬‬ ‫‪-3‬‬ ‫‪-2 -3 -16‬‬
‫‪2‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪9‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪47‬‬
‫‪2/8/2019‬‬

‫مقدمات ‪convolution‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫مقدمات ‪ – convolution‬لبهیابی‬

‫‪vertical edges‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬ ‫‪horizontal edges‬‬

‫‪48‬‬
2/8/2019

!‫یادگیری فیلتر‬
1 0 -1 1 0 -1 3 0 -3
1 0 -1 2 0 -2 10 0 -10

1 0 -1 1 0 -1 3 0 -3

3 0 1 2 7 4
1 5 8 9 3 1
𝑤1 𝑤2 𝑤3
2 7 2 5 1 3
𝑤4 𝑤5 𝑤6
0 1 3 1 7 8
𝑤7 𝑤8 𝑤9
4 2 1 6 2 8
2 4 5 2 3 9
Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬
‫علیرضا اخوان پور‬

The convolution operation


• Dense layers learn global patterns in
their input feature space

• Convolution layers learn local


patterns

Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬


‫علیرضا اخوان پور‬

49
‫‪2/8/2019‬‬

‫‪The patterns they learn are translation invariant‬‬

‫‪They can learn spatial hierarchies of patterns‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫مشکالت کانولوشن!‬

‫‪n‬‬ ‫∗‬ ‫‪f‬‬ ‫=‬

‫‪f‬‬
‫‪n‬‬
‫‪ ‬لبه ها به اندازه ی پیکسل های درونی در کانولوشن شرکت نمیکنند‬
‫‪ ‬خروجی کوچک میشود‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫‪n-f+1‬‬
‫علیرضا اخوان پور‬

‫‪50‬‬
‫‪2/8/2019‬‬

‫مشکالت کانولوشن!‬

‫‪n‬‬ ‫∗‬ ‫‪f‬‬ ‫=‬

‫‪f‬‬
‫‪n‬‬
‫‪ ‬لبه ها به اندازه ی پیکسل های درونی در کانولوشن شرکت نمیکنند‬
‫‪ ‬خروجی کوچک میشود‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫‪n-f+1‬‬
‫علیرضا اخوان پور‬

‫راه کار؟ ‪padding‬‬


‫‪0 0 0 0 0 0 0 0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪n‬‬ ‫‪0‬‬ ‫‪0‬‬
‫∗‬ ‫‪f‬‬ ‫=‬

‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪f‬‬
‫‪0 0 0 0 0 0 0 0‬‬
‫‪n‬‬
‫‪P=1‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪51‬‬
‫‪2/8/2019‬‬

‫‪padding‬‬
‫‪0 0 0 0 0 0 0 0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫∗‬ ‫‪f‬‬ ‫=‬

‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪f‬‬
‫‪0 0 0 0 0 0 0 0‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪padding‬‬
‫‪0 0 0 0 0 0 0 0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬
‫∗‬ ‫‪f‬‬ ‫=‬

‫‪0‬‬ ‫‪0‬‬
‫‪0‬‬ ‫‪0‬‬ ‫‪f‬‬
‫‪0 0 0 0 0 0 0 0‬‬

‫‪n=6‬‬ ‫‪6‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪52‬‬
2/8/2019

padding

n ∗ f =

f
n P = padding

n+2p-f+1
Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬
‫علیرضا اخوان پور‬

Same ‫ و‬Valid ‫کانولوشن‬


nxn * fxf -> n-f+1 x n-f+1
“Valid”: 6x6 * 3x3 -> 4 x 4

“Same”: Pad so that output size is the same


as the input size.
n+2p-f+1 x n+2p-f+1

n  2 p  f  1 n
𝒇 −𝟏 P=1‫برای مثال قبل‬
𝒑=
𝟐
Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬
‫علیرضا اخوان پور‬

53
‫‪2/8/2019‬‬

‫‪ Stride‬در کانولوشن‬

‫‪2‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪7‬‬ ‫‪43‬‬ ‫‪4‬‬ ‫‪4‬‬ ‫‪6‬‬ ‫‪34‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪9‬‬ ‫‪4‬‬

‫‪6‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪0‬‬ ‫‪9‬‬ ‫‪21‬‬ ‫‪8‬‬ ‫‪0‬‬ ‫‪7‬‬ ‫‪12‬‬ ‫‪4‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪2‬‬

‫‪3 -13 4‬‬ ‫‪40‬‬ ‫‪8 -143 3‬‬ ‫‪40‬‬ ‫‪8 -134 9‬‬ ‫‪40‬‬ ‫‪7‬‬ ‫‪43‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪4‬‬
‫‪7‬‬ ‫‪1‬‬ ‫‪8‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪21‬‬ ‫‪6‬‬ ‫‪0‬‬ ‫‪6‬‬ ‫‪2‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪2‬‬ ‫∗‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫=‬
‫‪4‬‬ ‫‪-1‬‬
‫‪3‬‬ ‫‪2‬‬ ‫‪04‬‬ ‫‪1‬‬ ‫‪-1‬‬
‫‪34‬‬ ‫‪8‬‬ ‫‪4‬‬
‫‪0‬‬ ‫‪3‬‬ ‫‪34‬‬
‫‪-1‬‬ ‫‪4‬‬ ‫‪0‬‬
‫‪4‬‬ ‫‪6‬‬ ‫‪3‬‬
‫‪4‬‬ ‫‪-1‬‬ ‫‪0‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪1‬‬
‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪9‬‬ ‫‪2‬‬
‫‪1‬‬ ‫‪8‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪2‬‬

‫‪0‬‬ ‫‪-1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪-1‬‬


‫‪3‬‬ ‫‪9‬‬ ‫‪0‬‬ ‫‪2‬‬ ‫‪3‬‬
‫‪-1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪4‬‬ ‫‪3‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫خالصه کانولوشن و خروجی آن‬

‫‪𝑛 × 𝑛 image‬‬ ‫‪𝑓 × 𝑓 filter‬‬

‫‪padding p‬‬ ‫‪stride s‬‬

‫𝑓‪𝑛+2𝑝 −‬‬ ‫𝑓‪𝑛+2𝑝 −‬‬


‫‪+1‬‬ ‫×‬ ‫‪+1‬‬
‫𝑠‬ ‫𝑠‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪54‬‬
‫‪2/8/2019‬‬

‫کانولوشن بر روی تصویر رنگی (‪)RGB‬‬

‫به ازای هر کانال رنگی یک فیلتر‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫کانولوشن بر روی تصویر رنگی (‪)RGB‬‬

‫جمع نظیر به نظیر ‪ feature map‬یا ‪activation map‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪55‬‬
‫‪2/8/2019‬‬

‫کانولوشن بر روی تصویر رنگی (‪)RGB‬‬

‫‪ +‬بایاس‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫کانولوشن بر روی تصویر رنگی (‪)RGB‬‬

‫∗‬ ‫=‬

‫‪3x3‬‬ ‫‪4x4‬‬

‫‪6x6x3‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪56‬‬
‫‪2/8/2019‬‬

‫چندین فیلتر‪...‬‬

‫∗‬ ‫=‬

‫‪3x3x3‬‬ ‫‪4x4‬‬

‫‪6x6x3‬‬ ‫∗‬ ‫=‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫چندین فیلتر‪...‬‬
‫‪Filters always extend the full‬‬
‫‪depth of the input volume‬‬
‫‪32x32x3 image‬‬

‫‪5x5x3 filter‬‬
‫‪32‬‬

‫‪32‬‬
‫‪3‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪57‬‬
2/8/2019

...‫چندین فیلتر‬
For example, if we had 6 5x5 filters, we’ll get 6 separate activation maps:

32

28

Convolution Layer

32 28
3 6

We stack these up to get a “new image” of size 28x28x6!


Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬
‫علیرضا اخوان پور‬

‫محاسبه تعداد پارامتر‬

3x3x3+1 = 28 ‫تعداد پارامترهای هر فیلتر‬


28x10 = 280
Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬
‫علیرضا اخوان پور‬

58
‫‪2/8/2019‬‬

‫یک شبکه کانولوشنال ساده‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫انواع الیه در شبکههای کانولوشنالی‬

‫)‪Convolution (Conv‬‬
‫)‪Pooling (Pool‬‬
‫)‪Fully Connected (FC‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪59‬‬
‫‪2/8/2019‬‬

‫الیهی ‪pooling‬‬

‫‪1‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬


‫‪2‬‬ ‫‪9‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪9 2‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪6 3‬‬
‫‪5‬‬ ‫‪6‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪ ‬دو ‪ hyper parameter‬دارد‪ s :‬و ‪f‬‬


‫‪ ‬هیچ پارامتری برای آموزش ندارد‬
‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬
‫علیرضا اخوان پور‬

‫الیهی ‪max pooling – pooling‬‬

‫‪1‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪3‬‬


‫‪2‬‬ ‫‪9‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪9 9 5‬‬
‫‪1‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪9 9 5‬‬
‫‪8‬‬ ‫‪3‬‬ ‫‪5‬‬ ‫‪1‬‬ ‫‪0‬‬
‫‪8 6 9‬‬
‫‪5‬‬ ‫‪6‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪9‬‬

‫‪5x5‬‬ ‫‪f=3‬‬
‫‪S=1‬‬
‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬
‫علیرضا اخوان پور‬

‫‪60‬‬
2/8/2019

Average pooling

1 3 2 1
2 9 1 1 3.75 1.25

1 4 2 3 4 2
5 6 1 2

Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬


‫علیرضا اخوان پور‬

pooling ‫خالصه‬

Hyperparameters:

f : filter size f = 2, s = 2
f = 3, s = 2
s : stride
Max or average pooling

Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬


‫علیرضا اخوان پور‬

61
‫‪2/8/2019‬‬

‫مثالی از یک شبکه کانولوشنالی (‪)LeNet-5‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫سایز هر الیه و تعداد پارامترها‬


‫‪Activation shape‬‬ ‫‪Activation Size‬‬ ‫*‪# parameters‬‬
‫‪Input:‬‬ ‫)‪(32,32,3‬‬ ‫‪3,072‬‬ ‫‪0‬‬
‫)‪CONV1 (f=5, s=1‬‬ ‫)‪(28,28,8‬‬ ‫‪6,272‬‬ ‫‪608‬‬
‫‪POOL1‬‬ ‫)‪(14,14,8‬‬ ‫‪1,568‬‬ ‫‪0‬‬
‫)‪CONV2 (f=5, s=1‬‬ ‫)‪(10,10,16‬‬ ‫‪1,600‬‬ ‫‪3216‬‬
‫‪POOL2‬‬ ‫)‪(5,5,16‬‬ ‫‪400‬‬ ‫‪0‬‬
‫‪FC3‬‬ ‫)‪(120,1‬‬ ‫‪120‬‬ ‫‪48, 120‬‬
‫‪FC4‬‬ ‫)‪(84,1‬‬ ‫‪84‬‬ ‫‪10,164‬‬
‫‪Softmax‬‬ ‫)‪(10,1‬‬ ‫‪10‬‬ ‫‪850‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪62‬‬
‫‪2/8/2019‬‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫شبکههای کانولوشنالی‪ ،‬انتقال یادگیری‪Data augmentation ،‬‬


‫علیرضا اخوان پور‬

‫‪63‬‬
2/8/2019

‫شبکههای کانولوشنالی در کراس – ارقام فارسی‬

Let’s code…

06_ConvolutionalNeuralNetwork-Hoda-Keras.ipynb

Data augmentation ،‫ انتقال یادگیری‬،‫شبکههای کانولوشنالی‬


‫علیرضا اخوان پور‬

‫منابع‬
• http://cs231n.stanford.edu/
• https://www.csee.umbc.edu/courses/671/fall01/class-notes/k-nn.ppt
• https://docs.google.com/presentation/d/1kytN5gqrZe0Bcu3hExjZpA4PQipaFEK
n26S-JhqncXk/edit#slide=id.g1ff36e20db_0_450
• https://www.slideshare.net/Alirezaakhavanpour/tensorflow-71395844
• https://www.datacamp.com/courses/convolutional-neural-networks-for-image-
processing

Keras ‫مقدمه ای بر شبکههای عصبی و پیادهسازی در کتابخانهی‬


‫علیرضا اخوان پور‬

64

You might also like