شبکه عصبی خانگی شبکه های عصبی: کاربرد عملی


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

مغز چیز پیچیده ای است، اما می توان آن را به چند بخش و عملیات اصلی تقسیم کرد:

عامل ایجاد کننده ممکن است درونی؛ داخلی(به عنوان مثال، یک تصویر یا یک ایده):

حالا بیایید نگاهی به اصول اولیه و ساده بیاندازیم قطعاتمغز:


مغز به طور کلی مانند یک شبکه کابلی است.

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

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

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

و آن را به طور رسمی با استفاده از نمودار توصیف کنید:

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

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

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

هنگامی که جریان هوای مطمئنی به سمت آنها هدایت می شود، خرگوش ها مانند مردم پلک می زنند:

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

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

بیایید یک عنصر دیگر را معرفی کنیم - ایمن سیگنال صوتی:

ما می توانیم علاقه خرگوش را به این شکل مدل کنیم:

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

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

صدا به خودی خود کاری انجام نمی دهد، اما جریان هواهنوز هم باعث پلک زدن خرگوش می شود، و ما این را از طریق وزنه های ضرب شده در محرک ها (به رنگ قرمز) نشان می دهیم.

تحصیلاترفتار پیچیده را می توان به صورت ساده به صورت تغییر تدریجی وزن بین نورون های متصل در طول زمان بیان کرد.

برای تربیت خرگوش مراحل زیر را تکرار می کنیم:

برای سه تلاش اول، طرح ها به این صورت خواهند بود:

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

نوردهی هوا را حذف کردیم، اما خرگوش با شنیدن صدای بوق همچنان چشمک می‌زند! آخرین نمودار ما می تواند این رفتار را توضیح دهد:

ما به خرگوش آموزش دادیم که با پلک زدن به صدا پاسخ دهد.


در یک آزمایش واقعی از این نوع، ممکن است بیش از 60 تکرار برای رسیدن به نتیجه لازم باشد.

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

فرض کنید ماشینی داریم با چهار دکمه که با فشار دادن دکمه صحیح غذا را پخش می کند
دکمه ها (خوب، یا انرژی اگر ربات هستید). وظیفه این است که بفهمید کدام دکمه پاداش می دهد:

ما می توانیم (به صورت شماتیک) آنچه را که یک دکمه با کلیک کردن به این صورت انجام می دهد را به تصویر بکشیم:

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


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

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

این شبکه عصبی به سادگی اطلاعات دریافتی را دریافت می کند - در این مورد این درک این است که کدام دکمه فشرده شده است. در مرحله بعد، شبکه اطلاعات دریافتی را با وزن جایگزین می کند و بر اساس افزودن یک لایه استنتاج می کند. کمی گیج کننده به نظر می رسد، اما بیایید ببینیم که چگونه دکمه در مدل ما نشان داده شده است:


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

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

ورودی های Var = ; وزن var = ; // برای راحتی می توان این بردارها را فراخوانی کرد
مرحله بعدی ایجاد تابعی است که جمع آوری می کند مقادیر ورودیو وزن و مقدار خروجی را محاسبه می کند:

تابع ارزیابیNeuralNetwork(inputVector،weightVector)(var result = 0; inputVector.forEach(function(inputValue, weightIndex) ( layerValue = inputValue*weightVector; result += layerValue; ))؛ return (result.toFixed(2)); /) / ممکن است پیچیده به نظر برسد، اما تنها کاری که انجام می دهد این است که جفت وزن/ورودی را مطابقت داده و نتیجه را اضافه کند
همانطور که انتظار می رود، اگر این کد را اجرا کنیم، همان نتیجه ای را خواهیم گرفت که در مدل یا نمودار خود ...

EvaluateNeuralNetwork (ورودی ها، وزن ها)؛ // 0.00
مثال زنده: Neural Net 001.

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

برای تشخیص ناسازگاری ها (و تعداد آنها)، یک تابع خطا اضافه می کنیم:

خطا = واقعیت - خروجی شبکه عصبی
با آن می توانیم عملکرد شبکه عصبی خود را ارزیابی کنیم:

اما مهمتر از آن، در مورد موقعیت هایی که واقعیت یک نتیجه مثبت ایجاد می کند چطور؟

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

خطا = خروجی مورد نظر- خروجی شبکه عصبی
یک اختلاف گریزان، اما چنین مهم، که بی سر و صدا نشان می دهد که ما خواهیم کرد
از نتایج قبلی برای مقایسه با اقدامات آینده استفاده کنید
(و برای یادگیری، همانطور که در ادامه خواهیم دید). این نیز در زندگی واقعی وجود دارد، پر از
تکرار الگوها، بنابراین می تواند به یک استراتژی تکاملی تبدیل شود (خوب، در
اکثر موارد).

ورودی Var = ; وزن var = ; var مورد نظر Result = 1;
و یک تابع جدید:

تابع ارزیابیNeuralNetError(desired,actual) ( return (Desired - Actual); ) // پس از ارزیابی شبکه و خطا، دریافت خواهیم کرد: // "خروجی شبکه عصبی: 0.00 خطا: 1"
مثال زنده: Neural Net 002.

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

چگونه یک شبکه عصبی را آموزش دهیم؟

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

در طبیعت، الگوریتم های یادگیری به تغییرات فیزیکی یا شیمیایی اشاره دارند
ویژگی های نورون ها پس از آزمایش:

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

نرخ یادگیری متغیر = 0.20; // هر چه مقدار بزرگتر باشد، روند یادگیری سریعتر خواهد بود :)
و این چه چیزی را تغییر خواهد داد؟

این باعث تغییر وزن ها می شود (درست مانند خرگوش!)، به خصوص وزن خروجی که می خواهیم تولید کنیم:

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

تابع Learn(inputVector, weightVector) (weightVector.forEach(function(weight, index, weights) (اگر (inputVector > 0) (وزن = وزن + نرخ یادگیری؛ ))؛)
در صورت استفاده، این تابع آموزشی به سادگی فاکتور یادگیری ما را به بردار وزن اضافه می کند نورون فعال، قبل و بعد از یک دور تمرین (یا تکرار)، نتایج به شرح زیر خواهد بود:

// بردار وزن اصلی: // خروجی شبکه عصبی: 0.00 خطا: 1 یادگیری (ورودی، وزن ها); // بردار New Weight: // خروجی شبکه عصبی: 0.20 خطا: 0.8 // اگر واضح نباشد، خروجی شبکه عصبی نزدیک به 1 است (خروجی مرغ) - که همان چیزی است که می‌خواستیم، بنابراین می‌توان نتیجه گرفت که در حال حرکت هستیم. به سمت در جهت درست
مثال زنده: Neural Net 003.

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

این خیلی پیچیده نیست، در طبیعت ما فقط یک کار را بارها و بارها انجام می دهیم، اما در کد فقط تعداد تکرارها را مشخص می کنیم:

آزمایشات Var = 6;
و اجرای تابع تعداد تکرارها در شبکه عصبی آموزشی ما به شکل زیر خواهد بود:

تابع قطار (آزمایشی) ( برای (i = 0; i< trials; i++) { neuralNetResult = evaluateNeuralNetwork(input, weights); learn(input, weights); } }
و این هم گزارش نهایی ما:

خروجی شبکه عصبی: 0.00 خطا: 1.00 وزن بردار: خروجی شبکه عصبی: 0.20 خطا: 0.80 وزن بردار: خروجی شبکه عصبی: 0.40 خطا: 0.60 وزن وکتور: خروجی شبکه عصبی: 0.60 خطا: خروجی شبکه عصبی 0.40 : 0.20 Weight Vector: Neural Net output: 1.00 Error: 0.00 Weight Vector: // Chicken Dinner !
مثال زنده: Neural Net 004.

اکنون ما یک بردار وزن داریم که اگر بردار ورودی با واقعیت مطابقت داشته باشد (با کلیک بر روی دکمه سوم) فقط یک خروجی (مرغ برای شام) تولید می کند.

پس جالب ترین کاری که ما انجام دادیم چیست؟

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

علاوه بر این، یک مدل مقیاس پذیر، یک اسباب بازی و ابزاری برای یادگیری ما است. ما توانستیم چیز جدیدی در مورد یادگیری ماشینی، شبکه های عصبی و هوش مصنوعی بیاموزیم.

هشدار به کاربران:

  • هیچ مکانیزمی برای ذخیره وزن های آموخته شده وجود ندارد، بنابراین این شبکه عصبی هر چیزی را که می داند فراموش می کند. هنگام به روز رسانی یا اجرای مجدد کد، به حداقل شش تکرار موفقیت آمیز برای یادگیری کامل شبکه نیاز دارید، اگر فکر می کنید که شخص یا ماشینی به طور تصادفی دکمه ها را فشار می دهد... این کار کمی طول می کشد.
  • شبکه های بیولوژیکی برای یادگیری چیزهای مهم دارای نرخ یادگیری 1 هستند، بنابراین تنها یک تکرار موفق مورد نیاز است.
  • یک الگوریتم یادگیری وجود دارد که شباهت زیادی به نورون های بیولوژیکی دارد و نامی جذاب دارد: قانون Widroff-hoff، یا آموزش Widroff-hoff.
  • آستانه های عصبی (در مثال ما 1) و اثرات بازآموزی (با تعداد تکرار زیاد، نتیجه بیشتر از 1 خواهد بود) در نظر گرفته نمی شوند، اما در طبیعت بسیار مهم هستند و مسئول بلوک های بزرگ و پیچیده واکنش های رفتاری هستند. . پس وزن های منفی را انجام دهید.

یادداشت ها و فهرست منابع برای مطالعه بیشتر

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

ساختار بیولوژیکی مغز تا حدی به دلیل عدم دقت و تا حدی به دلیل پیچیدگی موضوع ساده ای نیست. بهتر است با علوم اعصاب (Purves) و علوم اعصاب شناختی (Gazzaniga) شروع کنید. من مثال خرگوش را از Gateway to Memory (Gluck) تغییر داده و اقتباس کرده ام، که همچنین یک مقدمه عالی برای دنیای نمودارها است.

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

و اکنون در پایتون! با تشکر از Ilya Andshmidt برای ارائه نسخه Python:

ورودی = وزن = نتیجه_ مطلوب = 1 نرخ_آموزشی = 0.2 آزمایش = 6 تعریف شبکه عصبی_عصبی(آرایه_ورودی، آرایه_وزن): نتیجه = 0 برای i در محدوده(لن(آرایه_ورودی)): لایه_مقدار = آرایه_ورودی[i] * آرایه_وزن[i] نتیجه += ارزش_لایه print("evaluate_neural_network: " + str(نتیجه)) print("weights: " + str(weights)) نتیجه را برمی گرداند def value_error(desired, actual): خطا = مطلوب - چاپ واقعی ("evaluate_error: " + str(خطا) ) خطا را برگرداند def learn(input_array, weight_array): print("یادگیری...") برای i در محدوده(len(array_input_array)): if input_array[i] > 0: weight_array[i] += Learning_rate def train(trials ): برای i در محدوده (آزمایش): neural_net_result = ارزیابی_شبکه_عصبی (ورودی‌ها، وزن‌ها) یادگیری (ورودی‌ها، وزن‌ها) train (آزمایش‌ها)
و حالا برو! با تشکر از کایران ماهر برای این نسخه.

بسته اصلی import ("fmt" "math") func main() (fmt.Println("ایجاد ورودی ها و وزن ها...") ورودی ها:= float64(0.00, 0.00, 1.00, 0.00) weights:= float64(0.00, 0.00، 0.00، 0.00) مطلوب:= 1.00 LearnRate:= 0.20 آزمایش:= 6 قطار (آزمایش، ورودی، وزنه، دلخواه، نرخ یادگیری) ) Func train (trials int، ورودی های float64، وزن ها float64، float64 مورد نظر، یادگیری float64 R) برای i:= 1;< trials; i++ { weights = learn(inputs, weights, learningRate) output:= evaluate(inputs, weights) errorResult:= evaluateError(desired, output) fmt.Print("Output: ") fmt.Print(math.Round(output*100) / 100) fmt.Print("\nError: ") fmt.Print(math.Round(errorResult*100) / 100) fmt.Print("\n\n") } } func learn(inputVector float64, weightVector float64, learningRate float64) float64 { for index, inputValue:= range inputVector { if inputValue >0.00 (weightVector = weightVector + LearningRate ) return weightVector ) func value(inputVector float64, weightVector float64) float64 (نتیجه:= 0.00 برای ایندکس، مقدار ورودی:= محدوده ورودی بردار (لایهValue:=inputVector floatValue نتیجه ================================================================================================================================================================). عملکرد خطای ارزیابی (float64 مطلوب، float64 واقعی) float64 (بازگشت مطلوب - واقعی)

می توانید کمک کنید و مبلغی را برای توسعه سایت انتقال دهید

 

در نیمه اول سال 2016، جهان در مورد پیشرفت های بسیاری در زمینه شبکه های عصبی شنید - گوگل (بازیگر شبکه Go AlphaGo)، مایکروسافت (تعدادی از خدمات برای شناسایی تصویر)، استارت آپ های MSQRD، Prisma و دیگران الگوریتم های خود را نشان دادند.

به نشانک ها

ویراستاران سایت به شما می گویند که شبکه های عصبی چیست، برای چه چیزی مورد نیاز هستند، چرا آنها سیاره زمین را در حال حاضر تسخیر کرده اند و نه سال ها قبل یا بعد، چقدر می توانید از آنها درآمد داشته باشید و بازیگران اصلی بازار چه کسانی هستند. کارشناسان MIPT، Yandex، Mail.Ru Group و Microsoft نیز نظرات خود را به اشتراک گذاشتند.

شبکه های عصبی چیست و چه مشکلاتی را می توانند حل کنند؟

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

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

رئیس بخش جستجوی Mail.ru در Mail.Ru Group، آندری کالینین، خاطرنشان می کند که شبکه های عصبی قادر به حل مشکلات مشابه سایر الگوریتم های یادگیری ماشین هستند، تفاوت فقط در رویکرد آموزش است.

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

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

شرشولسکی معتقد است در آینده نزدیک (5 تا 10 سال) شبکه های عصبی به طور گسترده تری مورد استفاده قرار خواهند گرفت:

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

میخائیل بورتسف، رئیس آزمایشگاه سیستم‌های عصبی و یادگیری عمیق در مرکز MIPT برای سیستم‌های زنده، نقشه‌ای آزمایشی از توسعه شبکه‌های عصبی برای سال‌های 2016-2018 ارائه می‌کند:

  • سیستم های تشخیص و طبقه بندی اشیاء در تصاویر؛
  • رابط های تعامل صوتی برای اینترنت اشیا؛
  • سیستم های نظارت بر کیفیت خدمات در مراکز تماس؛
  • سیستم های تشخیص عیب (از جمله آنهایی که زمان را پیش بینی می کنند نگهداری) ناهنجاری ها، تهدیدات فیزیکی-سایبری؛
  • امنیت فکری و سیستم های نظارت؛
  • جایگزینی برخی از عملکردهای اپراتورهای مرکز تماس با ربات ها.
  • سیستم های تجزیه و تحلیل ویدئویی؛
  • سیستم های خودآموزی که مدیریت جریان مواد یا مکان اشیاء (در انبارها، حمل و نقل) را بهینه می کند.
  • سیستم های کنترل هوشمند و خودآموز برای فرآیندها و دستگاه های تولید (از جمله روباتیک)؛
  • ظهور سیستم های جهانی ترجمه در حال پرواز برای کنفرانس ها و استفاده شخصی؛
  • ظهور مشاوران ربات پشتیبانی فنییا دستیاران شخصی با عملکردهای مشابه یک شخص.

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

چرا شبکه های عصبی در حال حاضر اینقدر محبوب شده اند؟

دانشمندان بیش از 70 سال است که در حال توسعه شبکه های عصبی مصنوعی هستند. اولین تلاش برای رسمی کردن یک شبکه عصبی به سال 1943 بازمی‌گردد، زمانی که دو دانشمند آمریکایی (وارن مک‌کالوچ و والتر پیتس) مقاله‌ای در مورد محاسبات منطقی ایده‌های انسان و فعالیت‌های عصبی ارائه کردند.

با این حال، آندری کالینین از گروه Mail.Ru می‌گوید تا همین اواخر، سرعت شبکه‌های عصبی برای گسترش گسترده آن‌ها بسیار کم بود و بنابراین چنین سیستم‌هایی عمدتاً در پیشرفت‌های مربوط به بینایی کامپیوتر و در سایر زمینه‌ها از الگوریتم‌های دیگری استفاده می‌شدند. فراگیری ماشین.

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

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

"اول، یک آرایه بزرگ و در دسترس عموم از تصاویر برچسب گذاری شده (ImageNet) ظاهر شده است که می توانید روی آنها بیاموزید. ثانیاً، کارت‌های ویدئویی مدرن آموزش شبکه‌های عصبی و استفاده از آنها را صدها برابر سریع‌تر ممکن می‌سازند. ثالثاً، شبکه‌های عصبی آماده و از پیش آموزش‌دیده‌ای ظاهر شده‌اند که تصاویر را تشخیص می‌دهند، بر اساس آن‌ها می‌توانید برنامه‌های کاربردی خود را بدون نیاز به صرف زمان طولانی برای آماده‌سازی شبکه عصبی برای کار ایجاد کنید. کالینین خاطرنشان می کند که همه اینها توسعه بسیار قدرتمند شبکه های عصبی را به ویژه در زمینه تشخیص تصویر تضمین می کند.

اندازه بازار شبکه های عصبی چقدر است؟

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

بر اساس برخی برآوردها، بیش از نیمی از حرفه ها خودکار خواهند شد - این حداکثر حجمی است که می توان با آن بازار الگوریتم های یادگیری ماشین (و به ویژه شبکه های عصبی) را افزایش داد - آندری کالینین، گروه Mail.Ru

«الگوریتم‌های یادگیری ماشینی گام بعدی در خودکارسازی هر فرآیند، در توسعه هر فرآیند است نرم افزار. بنابراین، بازار حداقل با کل بازار نرم‌افزار منطبق است، اما از آن فراتر می‌رود، زیرا امکان ساخت راه‌حل‌های هوشمند جدید که برای نرم‌افزارهای قدیمی غیرقابل دسترس هستند، ممکن می‌شود.» آندری کالینین، رئیس بخش جستجوی Mail.ru در Mail ادامه می‌دهد. گروه Ru.

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

در چند ماه گذشته، چندین پروژه سرگرمی با مشخصات بالا با استفاده از شبکه های عصبی در بازار ظاهر شده است - این یک سرویس ویدیویی محبوب است که شبکه اجتماعیفیس بوک، و برنامه های کاربردی روسی برای پردازش تصویر (سرمایه گذاری از گروه Mail.Ru در ژوئن) و دیگران.

توانایی‌های شبکه‌های عصبی خود را هم گوگل نشان داد (فناوری AlphaGo در Go در مقابل قهرمان پیروز شد؛ در مارس 2016، این شرکت در حراجی 29 نقاشی کشیده شده توسط شبکه‌های عصبی و غیره) و مایکروسافت (پروژه CaptionBot، که تصاویر را در عکس ها تشخیص می دهد و به طور خودکار برای آنها شرح می دهد در ژوئن، این تیم یک سرویس برای تشخیص اتومبیل ها در عکس ها در برنامه Avto.ru ارائه کرد که توسط آلبوم شبکه های عصبی ضبط شده بود.

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

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

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

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

بازیگران اصلی در بازار شبکه های عصبی

همانطور که آندری کالینین اشاره می کند، به طور کلی، اکثر شبکه های عصبی موجود در بازار تفاوت زیادی با یکدیگر ندارند. «تکنولوژی همه تقریباً یکسان است. اما استفاده از شبکه های عصبی لذتی است که همه نمی توانند از پس آن برآیند. برای آموزش مستقل یک شبکه عصبی و اجرای آزمایش های زیادی روی آن، به مجموعه های آموزشی بزرگ و ناوگانی از ماشین ها با کارت های ویدئویی گران قیمت نیاز دارید. بدیهی است که چنین فرصت هایی وجود دارد شرکت های بزرگ"، او می گوید.

در میان بازیگران اصلی بازار، کالینین از گوگل و بخش آن Google DeepMind که شبکه AlphaGo را ایجاد کرد و Google Brain نام می برد. مایکروسافت پیشرفت های خاص خود را در این زمینه دارد - آنها توسط آزمایشگاه تحقیقاتی مایکروسافت انجام می شوند. ایجاد شبکه های عصبی در IBM، فیس بوک (بخش تحقیقات هوش مصنوعی فیس بوک)، بایدو (موسسه یادگیری عمیق بایدو) و دیگران انجام می شود. پیشرفت های زیادی در دانشگاه های فنی در سراسر جهان در حال انجام است.

گریگوری باکونوف، مدیر توزیع فناوری Yandex خاطرنشان می‌کند که پیشرفت‌های جالبی در زمینه شبکه‌های عصبی نیز در میان استارت‌آپ‌ها دیده می‌شود. به عنوان مثال، شرکت ClarifAI را به یاد می‌آورم. این یک استارت آپ کوچک است که زمانی توسط افرادی از گوگل ساخته شده است. در حال حاضر آنها شاید بهترین در جهان در تعیین محتوای یک عکس هستند." چنین استارتاپ هایی عبارتند از MSQRD، Prisma و غیره.

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

Yandex همچنین در حال ایجاد شبکه‌های عصبی خود است: «اساساً، چنین شبکه‌هایی قبلاً در کار با تصاویر و صدا استفاده می‌شوند، اما ما در حال بررسی قابلیت‌های آنها در زمینه‌های دیگر هستیم. اکنون ما در حال انجام آزمایش‌های زیادی در استفاده از شبکه‌های عصبی در کار با متن هستیم.» پیشرفت ها در دانشگاه ها انجام می شود: Skoltech، MIPT، دانشگاه دولتی مسکو، مدرسه عالی اقتصاد و دیگران.

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

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

چگونه همه چیز شروع شد

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

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

یک شبکه عصبی چگونه کار می کند؟

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

شبکه های عصبی چیست و چه کاری می توانند انجام دهند؟

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

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

نورون ها به گروه هایی تقسیم می شوند، هر گروه مشخصه ای را محاسبه می کند که به آن داده می شود. در سال 1993، دانشمند فرانسوی، Yann LeCun، LeNet 1 را به جهان نشان داد، اولین شبکه عصبی کانولوشنال که می‌توانست اعداد نوشته شده روی کاغذ را با دست به سرعت و با دقت تشخیص دهد. خودت ببین:

امروزه، شبکه های عصبی کانولوشن عمدتاً برای اهداف چندرسانه ای استفاده می شوند: آنها با گرافیک، صدا و تصویر کار می کنند.

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

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

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

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

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

شبکه های عصبی ترکیبی (کانولوشن + تکراری)

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

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

1. اسکایپ قابلیت ترجمه همزمان برای 10 زبان را معرفی کرده است. در میان آنها، برای یک لحظه، روسی و ژاپنی وجود دارد - برخی از سخت ترین در جهان. البته، کیفیت ترجمه نیاز به بهبود جدی دارد، اما همین واقعیت که اکنون می توانید با همکاران ژاپنی به زبان روسی ارتباط برقرار کنید و مطمئن باشید که درک خواهید شد، الهام بخش است.

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

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

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

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

6. فیس بوک به طور فعال روی DeepText AI کار می کند، یک برنامه ارتباطی که اصطلاحات تخصصی را می فهمد و چت ها را از زبان های زشت پاک می کند.

7. برنامه‌هایی مانند Prisma و Fabby که بر روی شبکه‌های عصبی ساخته شده‌اند، تصاویر و ویدیوها را ایجاد می‌کنند:

Colorize رنگ ها را در عکس های سیاه و سفید بازیابی می کند (مادر بزرگ شگفت انگیز!).

MakeUp Plus رژ لب مناسب برای دختران را از طیف واقعی برندهای واقعی انتخاب می کند: Bobbi Brown، Clinique، Lancome و YSL در حال حاضر در تجارت هستند.


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

چه چیز دیگری در آینده در انتظار ما است؟

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

بخش کشاورزی

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

دارو

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

بازار یابی

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

تجارت الکترونیک

تجارت الکترونیک در همه جا اجرا خواهد شد. دیگر نیازی به رفتن به فروشگاه آنلاین با استفاده از پیوند ندارید: می توانید هر چیزی را که می بینید با یک کلیک خریداری کنید. به عنوان مثال، شما چندین سال بعد در حال خواندن این مقاله هستید. رژ لب موجود در اسکرین شات اپلیکیشن MakeUp Plus را بسیار دوست دارید (به بالا مراجعه کنید). روی آن کلیک می‌کنید و مستقیم به سبد خرید می‌روید. یا ویدیویی در مورد تماشا کنید آخرین مدلهولولنز (عینک واقعیت ترکیبی) و بلافاصله سفارش خود را مستقیماً از YouTube انجام دهید.

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

P.S. Zinaida Falls یک شبکه عصبی Yandex است که شعر می نویسد. به کاری که ماشین بعد از آموزش توسط مایاکوفسکی نوشته است امتیاز دهید (املا و علائم نگارشی حفظ شده است):

« این»

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

چشمگیر است، درست است؟

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

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

علاقه مندان به گربه مراجعه کنند.

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

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

نحوه تشکیل سیگنال خروجی از دسته ای از سیگنال های ورودی توسط الگوریتم داخلی نورون تعیین می شود.

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

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

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

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

در نتیجه باید 33 نورون ایجاد کنید که هر کدام 900=30×30 ورودی خواهند داشت.
بیایید یک کلاس برای نورون خود ایجاد کنیم:

نوع Neuron = نام کلاس: رشته; // در اینجا نام نورون حرفی است که ورودی با آن مرتبط است: آرایه عدد صحیح; // در اینجا آرایه ورودی 30x30 output:integer است. // در اینجا او خواهد گفت که او تصمیم گرفت حافظه: آرایه عدد صحیح; // در اینجا تجربه مربوط به پایان تجربه قبلی را ذخیره می کند.

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

برای i:=0 تا 32 neuro_web[i]:=Neuron.Create; neuro_web[i].output:=0; // فعلاً بی صدا باشد neuro_web[i].name:=chr(Ord("A")+i); // حروف A تا Z پایان می یابند.

حال سوال این است که وقتی برنامه در حال اجرا نیست، "حافظه" شبکه عصبی را در کجا ذخیره خواهیم کرد؟
برای اینکه وارد INI یا خدای ناکرده پایگاه داده ها نروم، تصمیم گرفتم آنها را در همان بیت مپ های 30x30 ذخیره کنم.
به عنوان مثال، در اینجا حافظه نورون "K" پس از اجرای برنامه با فونت های مختلف وجود دارد:

همانطور که می بینید، اشباع ترین نواحی مربوط به پیکسل های رایج است.
هنگامی که هر نورون ایجاد شد، "حافظه" را در آن بارگذاری می کنیم:
p:=TBitmap.Create; p.LoadFromFile(ExtractFilePath(Application.ExeName)+"\res\"+ neuro_web[i].name+".bmp")

در ابتدای برنامه آموزش ندیده، حافظه هر نورون یک نقطه سفید 30x30 خواهد بود.

نورون به صورت زیر تشخیص داده می شود:

پیکسل 1 را بگیرید
- آن را با پیکسل اول حافظه مقایسه کنید (مقدار 0..255 وجود دارد)
- تفاوت را با یک آستانه خاص مقایسه کنید
- اگر اختلاف کمتر از آستانه باشد، فرض می کنیم که در این نقطه حرف مشابه حرف موجود در حافظه است، 1+ را به وزن نورون اضافه کنید.

و به همین ترتیب برای همه پیکسل ها.

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

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

برای x:=0 تا 29 برای y:=0 تا 29 انجام دهید n:=neuro_web[i].memory; m:=neuro_web[i].input; اگر ((abs(m-n)<120)) then // Порог разницы цвета if m<250 then neuro_web[i].weight:=neuro_web[i].weight+1; // Кроме того, не будем учитывать белые пиксели, чтобы не получать лишних баллов в весах if m<>0 سپس شروع کنید اگر m<250 then n:=round((n+(n+m)/2)/2); neuro_web[i].memory:=n; end else if n<>0 سپس اگر m<250 then n:=round((n+(n+m)/2)/2); neuro_web[i].memory:=n; end;

به محض اینکه چرخه آخرین نورون به پایان برسد، از بین همه آنها یکی را انتخاب می کنیم که بیشترین وزن را دارد:

اگر neuro_web[i].weight>max، max:=neuro_web[i].weight را شروع کنید. max_n:=i; پایان؛

بر اساس این مقدار max_n است که برنامه به ما می گوید که به نظر او چه چیزی را از دست داده ایم.
در ابتدا این همیشه درست نخواهد بود، بنابراین باید یک الگوریتم یادگیری ایجاد کنید.

S:=InputBox("حرف را وارد کنید"، "برنامه فکر می کند که این حرف "+neuro_web.name، neuro_web.name است)؛ برای i:=0 تا 32 شروع می کنیم //از نورون ها عبور می کنیم اگر neuro_web[i].name=s سپس شروع می کنیم //در نورون مورد نظر حافظه را برای x:=0 تا 29 به روز می کنیم برای y:= 0 تا 29 p.Canvas.Pixels:=RGB(neuro_web[i].memory,neuro_web[i].memory، neuro_web[i].memory) شروع می شود. //نوشتن یک مقدار پیکسل حافظه جدید پایان; پایان؛

p.SaveToFile(ExtractFilePath(Application.ExeName)+"\res\"+ neuro_web[i].name+".bmp");

ما خود به روز رسانی حافظه را به این صورت انجام می دهیم:

N:=گرد(n+(n+m)/2);

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

در اینجا چند تکرار برای حرف G آمده است:

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

تصاویر حروف را باز می کنیم و با حوصله به خطاهای برنامه اشاره می کنیم:

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

اما دانش اولیه در مورد عملکرد شبکه های عصبی را ارائه می دهد.

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

با دانلود برنامه به همراه سورس کد می توانید عقل تازه متولد شده ما را مسخره کنید

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

مرحله 0. بیایید نحوه عملکرد شبکه های عصبی را درک کنیم

ساده ترین راه برای درک اصول عملکرد شبکه های عصبی، استفاده از مثال Teachable Machine، یک پروژه آموزشی توسط گوگل است.

Teachable Machine از تصویری از دوربین لپ‌تاپ به‌عنوان داده ورودی استفاده می‌کند - آنچه باید توسط شبکه عصبی پردازش شود. به عنوان داده خروجی - کاری که شبکه عصبی پس از پردازش داده های دریافتی باید انجام دهد - می توانید از یک gif یا صدا استفاده کنید.

ابتدا باید شبکه عصبی را آموزش دهید. برای انجام این کار، کف دست خود را بالا بیاورید و دکمه "Train Green" را فشار دهید - این سرویس ده ها عکس می گیرد تا الگویی را در تصاویر پیدا کند. مجموعه ای از چنین تصاویری معمولاً "مجموعه داده" نامیده می شود.

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

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

مرحله 1. آماده سازی کامپیوتر برای کار با شبکه عصبی

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

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

نصب پایتون

اشتراک گذاری