شبکه های عصبی تشخیص حروف ج. راهی سریع برای تشخیص متن

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

مثال 3.11.تشخیص نامه سیستم MatLab عملکرد خاصی را ارائه می دهد

>> = prprob;

این تابع دو ماتریس باینری را برمی گرداند: در ماتریس الفبا (35x26) هر ستون یک حرف را رمزگذاری می کند و ماتریس اهداف (26x26) مورب است و برای شناسایی ستون خدمت می کند.

هر ستون الفبا مربوط به یک ماتریس 7×5 است که یک تصویر باینری از یک حرف است.

تابع زیر تمام ستون های الفبا را به صورت حروف نمایش می دهد (این تابع باید در فهرست کاری MatLab قرار گیرد):

نمودارهای تابع (الفبا)

fprintf("plotters 25 حرف اول را ترسیم می کند\n");

اندازه (الفبا)؛

error("پلاترها به ستون هایی با 35 عدد نیاز دارند");

MM = نقشه رنگی (خاکستری)؛

MM=MM(پایان:-1:1،:);

imagesc(تغییر شکل(الفبا(:,j),5,7)");

نتیجه اجرای تابع در شکل نشان داده شده است. 3.12:

>> نمودارها (الفبا)؛

شکل 3.12.رمزگذاری باینری الفبا.

بر اساس ساختار ماتریس اهداف، شبکه عصبی باید دارای 26 نورون خروجی باشد. تعداد نورون ها در لایه پنهان روی 10 تنظیم شده است.

>> net = newff(minmax(الفبا)،،("logsig" "logsig")،"traingdx");

>> P = الفبا. T = اهداف;

تعداد دوره ها را تنظیم کنید و فرآیند یادگیری را شروع کنید:

>> net.trainParam.epochs = 1000;

>> = قطار (خالص، P، T)؛

منحنی یادگیری در شکل نشان داده شده است. 3.13.

شکل 3.13.تغییر خطا در فرآیند یادگیری

برای بررسی کیفیت شبکه آموزش دیده، تصاویر نویزدار حروف را در نظر بگیرید (شکل 3.14):

>> noisyP = الفبا+randn(اندازه(الفبا)) * 0.2;

>> plotletters (noisyP)؛

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

>>A2 = sim(net,noisyP)؛

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

شکل 3.14.تصاویر حروف در حضور نویز

>> برای j=1:26

A3 = رقابت (A2(:,j));

answer(j) = find(compet(A3) == 1);

سپس می توانید به صورت بصری پاسخ های شبکه را برای بردارهای ورودی نویز با استفاده از دستورات ارزیابی کنید:

>> NetLetters=alphabet(:,پاسخ);

>> plotletters (NetLetters)؛

روی انجیر 3.15 نتیجه تشخیص نهایی را نشان می دهد.

شکل 3.15.نتیجه انجام تشخیص توسط شبکه عصبی

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

اجازه دهید صفحه‌ای داشته باشیم که به دوازده سلول، 4×3 تقسیم شده است. سلول‌ها نشان دهنده گسستگی عناصر تصویر هستند. هنگامی که تصویر فوکوس می شود، سلول یا روشن می شود یا خیر. "Illumination" مقدار واحد مقدار تحریک آن را تعیین می کند، "بدون روشنایی" - صفر. بنابراین، حرف O روشنایی سلول ها را تعیین می کند که در شکل 2.1 مشخص شده است. همانطور که در شکل 2.2 نشان داده شده است، حرف A صفحه را روشن می کند.

چه کاری باید انجام شود تا دستگاهی که در حال ساخت آن هستیم بتواند بگوید چه حرفی است؟

بدیهی است که لازم است تمام سیگنال های تحریک سلول های صفحه نمایش که با حرف O روشن می شوند به رابطی که طرح I را اجرا می کند اعمال شود. حروف O. وجود یک سیگنال واحد در خروجی رابط پاسخ را تعیین می کند: " این حرف O است."


برنج. 2.1.آموزش حرف O


برنج. 2.2.آموزش حرف "الف"

برای حرف A هم باید همین کار را کرد.

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

این محمولات اجرای «الکترونیکی» را با روش‌های مداری تعریف می‌کنند.

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

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

بنابراین، می توان گفت که ما یک سیستم برای تشخیص دو حرف "درست" داده شده ایجاد کرده ایم.

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

اجازه دهید امکان تشخیص حرف O را با فرض امکان روشنایی سلول های (1.1)، (1.3)، (4.1)، (4.3) در نظر بگیریم. سپس گزاره ساخته شده قبلی به شکل زیر در می آید:

به طور مشابه، برای حرف A، اجازه دهید سلول های (4،1) و (4،3) در معرض دید قرار گیرند:


برنج. 2.3.یادگیری مشترک حروف O و A

با ترکیب هر دو محمول، طرح شکل 2.3 را دریافت می کنیم.

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

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

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

طبیعت و ما به عنوان بخشی از آن هرگز اطلاعات دقیق، قطعی و قابل اعتماد نداریم. نور سلول های صفحه نمایش و همچنین گیرنده های چشم ما کامل نیست، تصویر درست نیست، نویز، شکاف و غیره وجود دارد. سپس مفاهیم شباهت، تداعی اهمیت حیاتی پیدا می کند. "چه چیزی بیشتر شبیه "تصویر" نشان داده شده است، وضعیتی که به وجود آمده است، و چه اقدامات پاسخی موجه تر است؟ - این سوالی است که اصل زندگی ما را در میان خطرات و دستاوردهای بسیار تعیین می کند. انجمنی بودن تفکر ما مطلق است.

این بدان معنی است که لازم است از متغیرهای بولی به خوبی تعریف شده (0، 1، "بله - نه"، "سفید - سیاه" و غیره) به سمت عدم قطعیت، قابلیت اطمینان یا سایر برآوردهای اطلاعات - به سمت متغیرهای واقعی حرکت کنیم.

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

بیایید مدار آموزش دیده ای را که دریافت کردیم به یک شبکه عصبی تبدیل کنیم (شکل 2.4).

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

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


برنج. 2.4.شبکه عصبی برای تشخیص حروف "O" و "A"

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

در ابتدا پیدا می کنیم

سپس می گذاریم

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

برنج. 2.22. بازنمایی نماد

سیستم واقعی خواندن کاراکترها کاملاً کار نمی کند و خود شخصیت ها در سبک متفاوت هستند. بنابراین، برای مثال، برای نماد A، واحدها ممکن است در سلول های اشتباه قرار گیرند، همانطور که در شکل نشان داده شده است. 2.22. علاوه بر این، مقادیر غیر صفر ممکن است خارج از طرح کلی کاراکتر رخ دهد. سلول های مربوط به طرح نماد ممکن است مقادیری غیر از 1 داشته باشند. ما همه اعوجاج ها را نویز می نامیم.

متلب یک تابع دارد prprob، که یک ماتریس را برمی گرداند، که هر ستون آن نشان دهنده ماتریسی است که به صورت بردار نوشته شده است که حرف مربوطه را توصیف می کند (ستون اول حرف A، ستون دوم حرف B و غیره را توصیف می کند). عملکرد prprobهمچنین یک ماتریس هدف با اندازه را برمی‌گرداند که هر ستون آن شامل یک عدد 1 در ردیف مربوط به عدد حرف است و سایر عناصر ستون صفر هستند. به عنوان مثال، ستون اول مربوط به حرف A حاوی 1 در ردیف اول است.

مثال. یک الگو برای حرف A تعریف کنید (برنامه Template_A.m).

% الگو برای حرف A

پروب

i=1; % تعداد حرف A

v=alphabet(:,i); % بردار مربوط به حرف A

template=reshape(v, 5,7)";

علاوه بر عملکردی که قبلاً توضیح داده شد prprobتوابع استفاده شده در برنامه تغییر شکل می دهد، که ماتریس را تشکیل می دهد و پس از جابجایی - (مطمئن شوید که تشکیل فوری ماتریس غیرممکن است) و تابع طرح داستان، که 35 عنصر بردار را به صورت شبکه رسم می کند. پس از اجرای برنامه Template_A.mماتریس را می گیریم قالبو الگوی حرف A همانطور که در شکل نشان داده شده است. 2.23.

برنج. 2.23. حرف الگویی شکل گرفت

برای تشخیص حروف الفبای لاتین، لازم است یک شبکه عصبی با 35 ورودی و 26 نورون در لایه خروجی ساخته شود. اجازه دهید تعداد نورون های لایه پنهان را برابر با 10 در نظر بگیریم (چنین تعدادی از نورون ها به صورت تجربی انتخاب شدند). اگر در طول تمرین مشکلاتی وجود داشته باشد، می توان تعداد نورون های این سطح را افزایش داد.



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

برنامه ای برای تشخیص حروف الفبای لاتین در نظر بگیرید Char_recognition.m

% برنامه تشخیص الفبای لاتین

پروب % تشکیل بردارهای ورودی و هدف

اندازه (الفبا)؛

اندازه (هدف)؛

% ایجاد شبکه

قطار (خالص، P، T)؛

% آموزش در حضور سر و صدا

P = ;

قطار (netn,P,T)؛

قطار (netn,P,T)؛

٪ تست شبکه

noise_rage=0:0.05:0.5; % آرایه سطوح نویز (انحراف استاندارد نویز

برای noiselevel=noise_rage

برای i=1:max_test

% تست برای شبکه 1

% تست برای شبکه 2

عنوان ("خطای شبکه")؛

xlabel ("سطح نویز")؛

ylabel("درصد خطا");

اپراتور = prprob; آرایه ای از بردارهای ورودی را تشکیل می دهند الفبااندازه با الگوهای حروف الفبا و آرایه ای از بردارهای هدف اهداف.

شبکه توسط اپراتور ایجاد می شود شبکه = الگوبیایید تنظیمات شبکه پیش فرض را بپذیریم. شبکه ابتدا در صورت عدم وجود نویز آموزش داده می شود. سپس شبکه بر روی 10 مجموعه از بردارهای ایده آل و پر سر و صدا آموزش داده می شود. دو مجموعه از بردارهای ایده آل استفاده می شود تا شبکه توانایی طبقه بندی بردارهای ایده آل (بدون نویز) را حفظ کند. پس از آموزش، شبکه نحوه طبقه بندی برخی از بردارهای بدون نویز را "فراموش کرد". بنابراین، شبکه باید دوباره بر روی بردارهای ایده آل آموزش داده شود.

قطعه برنامه زیر آموزش را در غیاب نویز انجام می دهد :

% آموزش شبکه در صورت عدم وجود نویز

قطار (خالص، P، T)؛

disp("آموزش شبکه در صورت عدم وجود نویز کامل شد. Enter را فشار دهید");

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

% آموزش در حضور سر و صدا

netn = خالص; درصد حفظ شبکه آموزش دیده

T = ;

P = ;

قطار (netn,P,T)؛

disp("آموزش شبکه در صورت وجود نویز کامل شد. Enter را فشار دهید");

از آنجایی که شبکه در حضور نویز آموزش داده شده است، برای اطمینان از طبقه بندی صحیح بردارهای ایده آل، تکرار آموزش بدون نویز منطقی است:

% بازآموزی در صورت عدم وجود سر و صدا

قطار (netn,P,T)؛

disp("آموزش مجدد شبکه در صورت عدم وجود نویز کامل شد. Enter را فشار دهید");

شبکه برای دو ساختار شبکه مورد آزمایش قرار گرفت: شبکه 1 آموزش دیده بر روی بردارهای ایده آل و شبکه 2 آموزش دیده بر روی توالی های نویزدار. نویز با مقدار میانگین 0 و انحراف معیار 0 تا 0.5 با گام 0.05 به بردارهای ورودی اضافه شد. برای هر سطح نویز، 10 بردار نویز برای هر نماد تشکیل شد و خروجی شبکه محاسبه شد (مطلوب است تعداد بردارهای نویز افزایش یابد، اما این به میزان قابل توجهی زمان اجرای برنامه را افزایش می دهد). شبکه آموزش داده شده است تا در تنها عنصر بردار خروجی که موقعیت آن با تعداد حرف شناسایی شده مطابقت دارد، یک تشکیل دهد و بقیه بردار را با صفر پر کند. خروجی شبکه هرگز یک بردار خروجی متشکل از 1 و 0 تشکیل نمی دهد. بنابراین، در شرایط نویز، بردار خروجی توسط تابع پردازش می شود. رقابت کنندکه بردار خروجی را طوری تبدیل می کند که بزرگترین خروجی روی 1 و سایر خروجی ها روی 0 تنظیم شود.

قطعه برنامه مربوطه به نظر می رسد:

% برای هر سطح نویز تست انجام دهید

برای noiselevel=noise_rage

برای i=1:max_test

P=alphabet+randn(35, 26)*noiselevel;

% تست برای شبکه 1

errors1=errors1+sum(sum(abs(AA-T)))/2;

% تست برای شبکه 2

errors2=errors2+sum(sum(abs(AAn-T)))/2;

٪ میانگین مقادیر خطا (max_test توالی 26 بردار هدف)

network1=;

شبکه2=;

plot(noise_rage, network1*100, noise_rage, network2*100);

عنوان ("خطای شبکه")؛

xlabel ("سطح نویز")؛

ylabel("درصد خطا");

legend("بردارهای ورودی ایده آل"، "بردارهای ورودی پر سر و صدا");

disp ("تست کامل شد");

هنگام محاسبه خطای تشخیص مثلا errors1=errors1+sum(sum(abs(AA-T)))/2، در نظر گرفته می شود که در صورت تشخیص نادرست، دو عنصر بردار خروجی و بردار هدف. مطابقت ندارند، بنابراین، هنگام محاسبه خطا، تقسیم بر 2 انجام می شود. sum(sum(abs(AA-T))) تعداد عناصر ناهماهنگ را در تمام مثال ها محاسبه می کند.

نمودارهای خطای تشخیص توسط شبکه آموزش دیده بر روی بردارهای ورودی ایده آل و شبکه آموزش دیده بر روی بردارهای نویز در شکل نشان داده شده است. 2.24. از انجیر 2.24 مشاهده می شود که شبکه آموزش داده شده بر روی تصاویر نویز یک خطای کوچک می دهد و شبکه نمی تواند بر روی بردارهای ورودی ایده آل آموزش داده شود.

برنج. 2.24. خطاهای شبکه بسته به سطح نویز

بیایید کار شبکه آموزش دیده را بررسی کنیم (شبکه آموزش دیده باید در فضای کاری متلب حضور داشته باشد). برنامه شناخت_ج.میک بردار نویز برای حرف J ایجاد می کند و حرف را تشخیص می دهد. عملکرد رندنیک عدد شبه تصادفی تولید می کند که بر اساس قانون عادی با انتظار ریاضی صفر و انحراف استاندارد واحد توزیع شده است. عدد تصادفی با انتظارات ریاضی مترو انحراف معیار دبا فرمول به دست می آید m+randn*d(در یک برنامه m=0، d=0.2).

noisyJ = alphabet(:,10)+randn(35,1) * 0.2;

plotchar(noisyJ);

disp("شخصیت پر سر و صدا. Enter را فشار دهید");

A2 = netn(noisyJ);

A2 = رقابت (A2)؛

ns = find(A2 == 1);

disp ("شخصیت شناخته شده");

plotchar(alphabet(:,ns));

برنامه شماره حرف شناسایی شده، الگوی نامه پر سر و صدا (شکل 2.25) و الگوی نامه شناسایی شده (2.26) را خروجی می دهد.

برنج. 2.25. الگوی نامه پر سر و صدا

برنج. 2.26. الگوی حروف شناخته شده

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

وظایف

1. تمام مثال های داده شده را انجام دهید.

2. تشخیص حروف متفاوت را تجربه کنید

3. بررسی تاثیر نویز در برنامه ها بر دقت تشخیص کاراکترها.

تقریب تابع

کتاب های مایکل نیلسون "شبکه های عصبی و یادگیری عمیق".


من ترجمه را به چندین مقاله در Habré تقسیم کردم تا خواندن آن آسانتر شود:
بخش 1) مقدمه ای بر شبکه های عصبی
قسمت 2) پلاتینگ و نزول گرادیان
بخش 3) پیاده سازی یک شبکه تشخیص رقم
قسمت 4) کمی در مورد یادگیری عمیق

مقدمه

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

شهود ساده - "9 دارای یک حلقه در بالا، و یک دم عمودی در پایین" است به آسانی برای پیاده سازی الگوریتمی نیست. شبکه های عصبی از مثال هایی استفاده می کنند، قوانینی را استنباط می کنند و از آنها درس می گیرند. علاوه بر این، هرچه نمونه‌های بیشتری را به شبکه نشان دهیم، اطلاعات بیشتری در مورد اعداد دست‌نویس می‌آموزد و بنابراین آنها را با دقت بیشتری طبقه‌بندی می‌کند. ما برنامه ای در 74 خط کد می نویسیم که ارقام دست نویس را با دقت بیش از 99 درصد تشخیص می دهد. پس بزن بریم!

پرسپترون

شبکه عصبی چیست؟ ابتدا مدل نورون مصنوعی را توضیح خواهم داد. پرسپترون در سال 1950 توسط فرانک روزنبلات توسعه یافت و امروز ما از یکی از مدل های اصلی او استفاده خواهیم کرد - پرسپترون سیگموئید. پس چگونه کار می کند؟ Persepron یک بردار را به عنوان ورودی می گیرد و مقداری خروجی را برمی گرداند.



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



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



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


مشکل یادگیری

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



اگر ممکن بود، می‌توانستیم وزنه‌ها را در جهت مطلوبی دستکاری کنیم و به تدریج شبکه را آموزش دهیم، اما مشکل اینجاست که با مقداری تغییر در وزن یک نورون خاص، خروجی آن می‌تواند کاملاً از 0 به 1 تبدیل شود. می تواند منجر به یک خطای بزرگ پیش بینی در سراسر شبکه شود، اما راهی برای حل این مشکل وجود دارد.

نورون سیگموئید

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



به نظر می رسد که آنها موارد کاملاً متفاوتی هستند، اما من به شما اطمینان می دهم که پرسپترون و نورون سیگموئید اشتراکات زیادی دارند. اجازه دهید فرض کنیم که پس و بنابراین . برعکس نیز صادق است، اگر، پس و . بدیهی است که هنگام کار با یک نورون سیگموئید، پرسپترون صاف تری داریم. و در واقع:


معماری شبکه های عصبی

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


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


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

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