bigpro1bigpro1bigpro1bigpro1
  • صفحه اصلی
  • تعرفه ها
  • سرویس ها
    • تحلیل آماری
    • یادگیری ماشین
      • یادگیری ماشین
      • یادگیری ماشین بدون نظارت
      • یادگیری ماشین با نظارت
    • ایجاد پرسشنامه آنلاین
    • یادگیری عمیق
    • یادگیری ماشین خودکار
    • پیش پردازش و آماده سازی داده ها
    • رابط برنامه نویسی کاربردی (API)
    • سیستم پشتیبان تصمیم‌گیری پویا
  • بلاگ
  • ورود/ثبت نام
  • 31620784779+
  • English
✕
            No results See all results
            1 Application of automated  machine learning in medicine-
            Article application of automated machine learning in medicine
            ژوئن 1, 2022
            inferential statistics-آمار استنباطی
            آمار استنباطی چیست؟
            اکتبر 22, 2022

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

            اکتبر 4, 2022
            Categories
            • یادگیری عمیق
            Tags
            neura networks - شبکه عصبی عمیق
            پاکسازی داده

            به نظر شما یک نرم‌افزار هوشمند چگونه می‌تواند مسائل خاصی را درک کرده و بتواند مسئله‌های مشابه را با کمترین خطا حل کند؟ برای پاسخ به این سوال، بهتر است پرسش دیگری را مطرح کنیم؛ انسان‌ها چگونه می‌توانند موضوعی را یاد بگیرند؟ اصلاً چگونه از شکست‌های‌ خود درس می‌گیریم؟

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

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

            شبکه عصبی چیست؟

            برای اینکه بتوانیم ‌شبکه های عصبی (neural network) را در هوش مصنوعی پیاده‌سازی کنیم، ابتدا باید مفهوم شبکه عصبی در مغز خود را بهتر درک کنیم.

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

            شبکه عصبی بیولوژیکی

            مغز انسان از میلیارد‌ها نورون (حدود 85 میلیارد) تشکیل شده است و این سلول‌های عصبی می‌توانند با یکدیگر ارتباط داشته باشند.

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

            Neuron- شبکه های عصبی عمیق
            • جسم سلولی: این قسمت که soma نیز خوانده می‌شود، شامل هسته سلول و اندامک‌های سلولی است.
            • دندریت: وظیفه دندریت‌ها، انتقال پیام‌های عصبی به هسته سلول است.
            • آکسون: وظیفه انتقال پیام عصبی از جسم سلولی به پایانه آکسون را دارد.
            • پایانه آکسون: وظیفه انتقال پیام به یک نورون یا اندام را از طریق یک فضای سیناپسی دارد.

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

            فرایند یادگیری در مغز پیچیده‌تر از آن است که بتوان آن را در چند پاراگراف توضیح داد و می‌توان برای این فرایند در مغز، کتاب‌های متعددی نوشت.

            شبکه عصبی مصنوعی

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

            ‌شبکه های عصبی مصنوعی در حقیقت ترکیبی از ریاضیات و ساختاری مشابه با شبکه عصبی مغز انسان‌اند:

            • پردازش‌ اطلاعات در واحدهای ساده‌ای به نام نورون انجام می‌شود.
            • سیگنال‌ها (اطلاعات) از طریق پیوندهای اتصالی بین نورون‌ها ارسال می‌شوند.
            • هر اتصال دارای وزن (Weight) مربوط به خود است؛ وزن‌ها معمولا در سیگنال‌های ورودی اتصال ضرب می‌شوند.
            • هر نورون یک تابع فعال‌سازی (معمولاً غیرخطی) را روی ورودی‌های شبکه اعمال می‌کند. تابع فعال‌سازی در حقیقت خروجی نورون را تعیین می‌کند.

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

            Nerual netword layers- شبکه عصبی

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

            یک شبکه عصبی مصنوعی را می‌توان با سه ویژگی زیر مشخص کرد:

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

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

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

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

            تاریخچه شبکه های عصبی

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

            در سال 1943 این دو نفر یک مقاله در رابطه با چگونگی عملکرد نورون‌ها نوشتند. همچنین برای توصیف عملکرد نورون‌ها در مغز، یک شبکه عصبی ساده با استفاده از مدارهای الکتریکی مدل‌سازی کردند.

            در سال 1949 دونالد هب اثری به نام “سازمان رفتار” را نوشت؛ اثری که به این واقعیت اشاره دارد که مسیر‌های عصبی با هر بار استفاده تقویت می‌شوند. او استدلال کرد که هر پرتاب سیگنال‌های الکتریکی بین دو سلول عصبی، ارتباط بین آن‌ها را تقویت می‌کند.

            این قانون که بعداً به افتخار دونالد هب به نام یادگیری هبی (Hebbian Learning Rule) شناخته شد، یکی از ساده‌ترین قوانین یادگیری برای ‌شبکه های عصبی مصنوعی است.

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

            در سال 1951 ناروین مینسکی اولین شبکه عصبی مصنوعی(ANN) را در دانشگاه پرینستون ساخت.

            با این حال، تلاش‌ها تا به امروز ادامه داشته و یکی از ثمره این تلاش‌ها دستیارهای صوتی ماننده الکسا بوده.

            امتحان کنید

            ساختار شبکه عصبی

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

            لایه ورودی

            در یک شبکه عصبی نورون‌های لایه ورودی نقش متفاوتی نسبت به سایر نورون‌ها بازی می‌کنند. نورون‌های لایه ورودی را “نورن غیرفعال” می‌نامد، زیرا این نورون‌ها اطلاعاتی را از نورون‌های قبلی دریافت نمی‌کنند (کاملاً واضح است چرا، زیرا این نورون‌ها در اولین لایه هستند).

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

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

            توجه به این نکته نیز ضروری است که اتصال خروجی یک لایه ورودی می‌تواند به یک نورون در زیرلایه دوم در لایه مخفی باشد؛ یعنی هیچ اجباری به متصل کردن لایه ورودی به اولین زیرلایه در لایه مخفی نیست.

            در یک شبکه عصبی مصنوعی، لایه ورودی می‌تواند بیش از یک لایه باشد.

            ورودی‌های لایه ورودی باید ابتدا نرمالیزه شوند و سپس برای لایه ورودی ارسال شوند. نرمالیزه کردن داده یکی مهم‌ترین مراحل در داده‌کاوی است.

            لایه مخفی

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

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

            در این لایه فعالیت‌هایی مشابه فعالیت‌های مغز انسان انجام می‌شود. لایه مخفی شامل نورون‌هایی است که شامل ورودی وزن دار و تابع فعال ساز هستند.

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

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

            مانند یک نورون بیولوژیکی سیگنال(داده) احتمالی را دریافت کرده، محاسبات لازم را انجام می‌دهند و خروجی وزن دار را برای نورن‌های دیگر را تولید می‌کنند(تابع فعال ساز).

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

            لایه خروجی

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

            هر کدام از آن‌ها نماینده یک عدد از 0 تا 9 هستند و خروجی هر کدام یک عدد بین 0 تا 1 است. اگر عدد خروجی در نورن شماره 10 برابر 0.8 باشد و خروجی بقیه نورون ها زیر این عدد باشد، می‌توان نتیجه گرفت که عدد موردنظر 9 است.(زیرا از 0 شروع کردیم).

            اتصالات و وزن ها و بایاس ها

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

            در شبکه عصبی مغز انسان، هر اتصال یک شدت دارد که اهمیت آن را مشخص می‌کند، این پدیده در ‌شبکه های عصبی مصنوعی نیز باید پیاده‌سازی شود. بدین منظور در شبکه عصبی مصنوعی هر اتصال شامل یک وزن است و هر وزن نشان‌دهنده اهمیت یک اتصال است. وزن در یک شبکه عصبی مصنوعی نماینده شدت در شبکه عصبی بیولوژیکی است و بایاس یک عدد ثابت است که به محاسبات در شبکه عصبی کمک می‌کند.

            کاملاً واضح است که وزن ها مهم‌ترین عنصر در یادگیری یک شبکه عصبی هستند.

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

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

            تابع فعال ساز

            همانطور که قبلاً اشاره کردیم مهم‌ترین قسمت سازنده یک نورون، تابع فعال‌ساز آن است. تابع فعال‌ساز یک تابع ریاضیاتی است. گاهی این توابع را توابع انگیزشی نیز می‌نامند.

            توابع فعال‌ساز معمولاً مقداری بین 0 و 1 تولید می‌کنند. این موضوع می‌تواند نسبت به خود تابع متفاوت باشد. برای مثال در تابع ReLU مقادیر خروجی می‌توانند بیش از 1 باشند. معمولاً تابع فعال‌ساز یک تابع غیر خطی است. برخی از توابع فعال‌ساز عبارتند از:

            • Sigmoid / Logistic
            • ReLU
            • Leaky ReLU
            • Parametric ReLU

            قانون یادگیری

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

            برخی از روش های یادگیری عبارتند از:

            • Hebbian
            • Perceptron
            • Delta

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

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

              • Long short-term memory
              • Recurrent neural network
            • Convolutional neural network
            • Perceptron

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

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

            برخی از کاربرد‌های شبکه عصبی عبارتند از:

            ·         طبقه‌بندی اطلاعات

            ·         پیش‌بینی وضعیت آب و هوا

            ·         پردازش تصاویر

            ·         تشخیص گفتار

            ·         پردازش زبان طبیعی

            ·         پیش‌بینی قیمت سهام

            ·         ساخت دارو

            ·         شبیه سازی پدیده‌های پیچیده فیزیکی

            چکیده

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

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

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

            امتحان کنید

            منبع: https://b2n.ir/z95042

            Share
            5

            Related posts

            الگوریتم های یادگیری عمیق - الگوریتم یادگیری عمیق
            ژانویه 3, 2023

            معرفی کامل 4 الگوریتم یادگیری عمیق


            Read more

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ارتباط با ما

            درباره بیگ‌پرو1

            بلاگ

            مشاغل

            copyright © 2021 Bigpro1, co
                        No results See all results
                        • English
                        • فارسی

                          Quick support