جستجو برای:
  • فروشگاه
  • وبلاگ
  • آموزش‌های رایگان
    • آموزش پایتون رایگان
    • آموزش یادگیری ماشین رایگان
    • آموزش یادگیری عمیق رایگان
    • آموزش pytorch رایگان
    • آموزش گوگل کولب
    • آموزش رایگان matplotlib
    • آموزش متلب رایگان
    • دوره‌های خارجی
  • نقشه راه AI
  • کلاس خصوصی
  • همکاری با ما💚
  • حساب کاربری
  • اساتید
  • درباره ما
     
    • 0902-546-9248
    • howsam.mail@gmail.com
    آکادمی هوش مصنوعی هوسم
    • فروشگاه
    • وبلاگ
    • آموزش‌های رایگان
      • آموزش پایتون
      • آموزش یادگیری ماشین رایگان
      • آموزش یادگیری عمیق
      • آموزش pytorch
      • آموزش گوگل کولب
      • آموزش رایگان matplotlib
      • آموزش متلب
      • دوره‌های خارجی
    • نقشه راه AI
    • کلاس خصوصی
    • درباره ما
      • اساتید
      • پشتیبانی
      • هوسم در اینستا و تلگرام
        • اینستاگرام هوسم (howsam_org@)
        • تلگرام هوسم (howsam_org@)
        • تلگرام پایتورچ (pytorch_howsam@)
    • همکاری با ما💚
    0

    ورود و ثبت نام

    بلاگ

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

    شبکه اتوانکدر

    2024/09/14
    ارسال شده توسط سید سجاد اشرفی
    یادگیری عمیق
    1.63k بازدید

    شبکه اتوانکدر (Autoencoder) یک نوع شبکه عصبی است که برای فشرده‌سازی (کدگذاری) داده‌های به‌کار می‌رود. تا الان در هوسم درباره آن آموزشی ننوشته بودم! گناه بزرگی هست! 🙁 با من و هوسم در آموزش شبکه اتوانکدر همراه باشید…

    فهرست مطالب نمایش
    1. شبکه اتوانکدر چیست؟
    1.1. ساختار شبکه اتوانکدر
    1.2. آموزش شبکه اتوانکدر
    1.3. اتوانکدرها در کتاب دیپ لرنینگ آقای Goodfellow
    1.4. اتوانکدر در سایت Keras
    2. انواع شبکه اتوانکدر
    2.1. اتوانکدر ناقص (Undercomplete Autoencoder)

    شبکه اتوانکدر چیست؟

    شبکه اتوانکدر (autoencoder) یک شبکه عصبی بدون ناظر (Unsupervised) است که از دو بخش اصلی انکدر (Encoder) و دیکدر (Decoder) تشکیل شده است؛ انکدر (Encoder) داده‌های ورودی را به یک نمایش فشرده تبدیل می‌کند و دیکدر (Decoder) تلاش می‌کند داده‌های فشرده‌شده را به شکل اصلی بازسازی کند. شکل زیر نشان می‌دهد که چگونه انکدر یک نمایش فشرده از تصویر ورودی ارائه کرده است. همچنین، این نمایش فشرده به دیکدر داده شده تا نسخه بازسازی‌شده ورودی حاصل شود.

    شبکه اتوانکدر
    شبکه اتوانکدر که از دو بخش اصلی انکدر و دیکدر تشکیل شده است.

    ساختار شبکه اتوانکدر

    با شبکه اتوانکدر آشنا شدید. حالا می‌خواهم اجزای شبکه اتوانکدر و اصطلاحات مرتبط با این شبکه را به شما توضیح دهم.

    • انکدر (Encoder): داده ورودی (x) را به یک نمایش فشرده با ابعاد پایین (h) تبدیل می‌کند. وظیفه انکدر کاهش ابعاد داده است تا تنها اطلاعات مهم از داده حفظ شود. این بخش معمولا شامل چند لایه شبکه عصبی (فولی کانکتد، کانولوشنی و غیره) متوالی است که به مرور اطلاعات ورودی را فشرده و ویژگی‌های کلیدی را استخراج می‌کنند.

    • فضای نهفته (Latent Space): به خروجی انکدر (h) بردار ویژگی نهفته گفته می‌شود. چون، ویژگی‌های مهم استخراج‌شده از داده ورودی در آن نهفته شده است. در واقع، بردار نهفته نمایانگر خلاصه‌ای از اطلاعات ورودی است که ویژگی‌های اصلی و کلیدی آن را در یک فضای کم‌بعد نگهداری می‌کند. همچنین، فضای نهفته جایی است که داده‌ها با کمترین ابعاد ممکن اما حاوی اطلاعات ضروری ذخیره می‌شوند. هدف این است که این بردار فشرده ویژگی‌های مهم داده را حفظ کند، به طوری که بازسازی داده از طریق دیکدر به درستی انجام شود.

    • دیکدر (Decoder): داده‌های ورودی را بر اساس بردار نهفته بازسازی می‌کند (r). این بخش نیز شامل چند لایه عصبی است که به مرور داده‌های فشرده را به ابعاد اصلی بازمی‌گرداند.

    آموزش شبکه اتوانکدر

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

    • تابع اتلاف (Loss Function): تابع اتلاف، اختلاف بین داده‌های ورودی (x) و خروجی بازسازی‌شده (r) را محاسبه می‌کند. دقت کنید، بالاتر گفتم که شبکه اتوانکدر به‌صورت بدون ناظر (Unsupervised) آموزش می‌بیند. هدف اتوانکدر کاهش این تفاوت است تا خروجی هرچه بیشتر شبیه ورودی باشد. توابع اتلاف رایجی مانند MSE یا Cross-Entropy در اینجا به کار می‌روند.
    • بهینه‌سازی (Optimization): فرآیندی است که در آن وزن‌های شبکه به گونه‌ای تنظیم می‌شوند که مقدار تابع اتلاف به حداقل برسد. این کار با استفاده از الگوریتم‌هایی مانند Adam یا SGD انجام می‌شود که با استفاده از گرادیان (Gradient)، وزن‌ها را به‌روزرسانی می‌کنند.
    آموزش شبکه اتوانکدر
    آموزش شبکه اتوانکدر

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

    اتوانکدرها در کتاب دیپ لرنینگ آقای Goodfellow

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

    اتوانکدر در سایت Keras

    آقای شولت با یک معرفی سنگین و پرنکته از اتوانکدر شروع کرده! بخشی از متن را در تصویر زیر آوردم. با عبارت Autoencoding شروع کرده؛ اتوانکدینگ یک الگوریتم فشرده‌سازی داده هست که شامل توابع compression و decompression هست. همان انکدر و دیکدری که بالاتر دیدیم! تقریبا در همه زمینه‌هایی که از عبارت اتوانکدر استفاده می‌شود، توابع compression و decompression مبتنی بر شبکه‌های عصبی هستند. توابع compression و decompression سه خاصیت مهم دارند:

    • Data-specific: یعنی، اتوانکدرها تنها قادر به فشرده‌سازی داده‌های مشابه با داده‌های آموزشی (Train data) هستند. مثلا، یک اتوانکدر که روی تصاویر چهره آموزش دیده، در فشرده‌سازی تصاویر درخت نسبتا ضعیف خواهد بود. چون، ویزگی‌هایی که اتوانکدر آموخته، خاص چهره هستند.
    • Lossy: فرآیند decompression در اتوانکدر از جنس با اتلاف (Lossy) هست. یعنی، خروجی یک نسخه تنزل یافته (Degraded) از ورودی هست. همین حرف را آقای گودفلو هم گفته بود.
    • Learned automatically from examples: به همان ساختار شبکه عصبی و آموزش دیدن آنها اشاره می‌کند. این در مقابل روش مهندسی ویژگی است که من و شما باید آچار به دست باشیم!

    بریم سراغ یک منبع دیگه؟! بسه دیگه! حالا با این آشنایی خوبی که بدست آوردید، وارد مباحث عمیق‌تر شویم…

    انواع شبکه اتوانکدر

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

    • اتوانکدر ناقص (Undercomplete Autoencoder)
    • اتوانکدر تنظیم‌شده (Regularized Autoencoder)
    • اتوانکدر اسپارس (Sparse Autoencoder)
    • اتوانکدر متغیر (Variational Autoencoder)

    با اتوانکدر ناقص شروع کنیم…

    اتوانکدر ناقص (Undercomplete Autoencoder)

    اتوانکدر ناقص (Undercomplete Autoencoder) ساده‌ترین نوع اتوانکدر است که خروجی انکدر (h) ابعاد کوچکتری نسبت به ورودی (x) دارد. این کاهش ابعاد باعث می‌شود که شبکه مجبور شود ویژگی‌های اصلی و مهم داده را یاد بگیرد، به جای اینکه داده‌ها را صرفا کپی کند. می‌دانید که ما کپی کردن کامل ورودی در خروجی را در اتوانکدر نمی‌پسندیم! خلاصه اینکه، ساختار اتوانکدر ناقص باعث می‌شود داده به طور موثر فشرده‌سازی و اطلاعات غیرضروری حذف شود. همچنین، ویژگی‌های مهم برای بازسازی داده‌ها در مرحله دیکدر حفظ شود.

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

    • خطوط 1 الی 4 که ایمپورت هست!
    • خطوط 6 الی 11 مربوط به فراخوانی دیتاست MNIST، نرمالیزه به بازه [0,1] و تبدیل به بردار به‌طول 768 هست.
    • خطوط 13 الی 22 یک مدل اتوانکدر ناقص بر پایه لایه فولی کانکتد ساخته شده است.
    • در خط 18، انکدر با یک لایه فولی کانکتد و تابع فعال‌ساز ReLU ساخته شده است.
    • خروجی انکدر (بردار نهفته) به طول 32 هست. در اتوانکدر ناقص، ابعاد h کوچکتر از x هست.
    • در خط 20، دیکدر با یک لایه فولی کانکتد و تابع فعال‌ساز Sigmoid ساخته شده است.
    • خروجی دیکدر برداری به طول 768 هست. سایز بردار r برابر با x شده است.
    • نهایتا در خط 22، انکدر و دیکدر به هم متصل شده و اتوانکدر تشکیل شده است.
    • در خط 25، بهینه‌ساز Adam و تابع اتلاف باینری کراس آنتروپی تنظیم شده است.
    • در خط 28، دستور fit برای آموزش مدل برای 50 ایپاک قرار دارد.
    • خط 35 مربوط به گرفتن خروجی از مدل اتوانکدر  آموزش‌دیده هست (Inference).
    import tensorflow as tf
    from tensorflow.keras import layers, models
    from tensorflow.keras.datasets import mnist
    import numpy as np
    
    # Load MNIST dataset
    (x_train, _), (x_test, _) = mnist.load_data()
    x_train = x_train.astype('float32') / 255.
    x_test = x_test.astype('float32') / 255.
    x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))  # Flatten to 784
    x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))
    
    # Autoencoder model
    input_dim = 784  # 28*28 flattened images
    encoding_dim = 32  # Dimension of the latent space (compressed representation)
    # Encoder
    input_img = layers.Input(shape=(input_dim,))
    encoded = layers.Dense(encoding_dim, activation='relu')(input_img)
    # Decoder
    decoded = layers.Dense(input_dim, activation='sigmoid')(encoded)
    # Full autoencoder
    autoencoder = models.Model(input_img, decoded)
    
    # Compile model
    autoencoder.compile(optimizer='adam', loss='binary_crossentropy')
    
    # Train the model
    autoencoder.fit(x_train, x_train,
                    epochs=50,
                    batch_size=256,
                    shuffle=True,
                    validation_data=(x_test, x_test))
    
    # After training, use the autoencoder to make predictions (compression and decompression)
    reconstructed_imgs = autoencoder.predict(x_test)

    متغیر reconstructed_imgs شامل تصاویر بازسازی‌شده x_test هست. آنها را از ابعاد 768 به یک تصویر 32×32 تبدیل می‌کنیم. حالا می‌توانیم، ورودی (x_test) و تصویر بازسازی‌شده (reconstructed_imgs) را نمایش دهیم و مقایسه کنیم.

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

    کدهای شبکه اتوانکدر در گیتهاب هوسم

    خب، فعلا همین اندازه کافی هست! ببینیم نظرات شما به چه شکلی هست. اگر مثبت بود و دوست داشتید، ادامه میدیم. فعلا! ✋😊

    اشتراک گذاری:

    مطالب زیر را حتما مطالعه کنید

    یادگیری انتقالی
    یادگیری انتقالی یا Transfer Learning به معنای استفاده از یک مدل از پیش آموزش‌دیده در...
    شبکه VGG
    شبکه VGG یکی از معماری‌های موفق و معروف در حوزه یادگیری عمیق است که در...
    مهندسی پرامپت
    امروزه، با ظهور ChatGPT و سایر ابزارهای هوش مصنوعی، طیف گسترده‌ای از افراد، از کاربران...
    مدل nanoGPT
    در سال ۲۰۱۹، OpenAI مدل GPT-2 را معرفی کرد. OpenAI، برخلاف مدل‌های بعدی (GPT-3 و...
    شگفت‌انگیزترین ایده هوش مصنوعی از نظر Andrej Karpathy
    هوش مصنوعی به سرعت در حال پیشرفت هست. به‌گونه‌ای که باید زمان و انرژی زیادی...
    شبکه ویژن ترنسفورمر
    شبکه ویژن ترنسفورمر (Vision Transformer) یا ViT یک شبکه عصبی مبتنی بر مدل ترنسفورمر هست...

    16 دیدگاه

    به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.

    • فاطمه گفت:
      2025/01/28 در 12:51 ق.ظ

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

      پاسخ
      • هوسم گفت:
        2025/01/29 در 11:30 ق.ظ

        سلام
        بله، چنین کاربردی داره.

        پاسخ
    • سعید گفت:
      2025/01/14 در 1:07 ب.ظ

      واقعا قشنگه ⚘

      پاسخ
      • هوسم گفت:
        2025/01/15 در 10:49 ق.ظ

        ممنون 🙏🌹😊

        پاسخ
    • شایان گفت:
      2024/12/16 در 6:58 ب.ظ

      سلام
      خیلی توضیحاتتون کامل بود.
      خیلی ممنون
      یک سوال داشتم
      الان keras دیگه زیر مجموعه tenseorflow و باید جدا نصب بشه؟

      پاسخ
      • هوسم گفت:
        2024/12/17 در 10:20 ق.ظ

        سلام
        خوشحالیم که آموزش شبکه اتوانکدر براتون مفید بوده.
        با نصب تنسورفلو، کراس هم نصب میشه.
        اما، الان دیگه کراس از backend-های مختلفی ساپورت میکنه؛ مثلا، کراس با backend پایتورچ یا Jax. مثلا میتونید با دستور pip install –upgrade keras اول کراس رو نصب کنید؛ بعد هم یکی از بکندهای تنسورفلو، پایتورچ یا جکس رو نصب کنید.
        https://keras.io/getting_started/

        پاسخ
    • kowsari.fgh گفت:
      2024/11/08 در 7:37 ب.ظ

      با سلام مطالب صفحه تون خیلی کامله راجب اون چیزی ک من میخواستم خیلی لطف کردین به اشتراک گذاشتین راجب چگونگی کار کردن و اینکه llm کلا چیه هم مطالب زیاد بزارین

      پاسخ
      • هوسم گفت:
        2024/11/09 در 10:10 ق.ظ

        سلام
        خوشحالیم که مطالب سایت بهتون کمک کرده.
        برای بحث مدل زبانی بزرگ یا LLM محتواهایی در سایت منتشر کردیم. مثلا می‌تونید موارد زیر رو در سایت هوسم مطالعه بفرمایید:
        مدل زبانی چیست
        LLM چیست؟
        مدل MobileLLM
        درحال تهیه یک دوره ویدئویی آموزش LLM هم هستیم.
        موفق باشید 🌹

        پاسخ
    • نیما آقاجان زاده گفت:
      2024/10/20 در 7:59 ب.ظ

      ممنون عالی بود

      پاسخ
      • هوسم گفت:
        2024/10/21 در 11:14 ق.ظ

        ممنون 🌹🙏

        پاسخ
    • sahel گفت:
      2024/10/19 در 6:28 ب.ظ

      عاااااااالی بود من بارها و بارها آموزش های شما رو میخونم بینظیرید

      پاسخ
      • هوسم گفت:
        2024/10/20 در 10:43 ق.ظ

        خوشحالیم که چنین حسی نسبت به آموزش‌های هوسم دارید. 😊
        ممنون 🌹🙏

        پاسخ
    • وحید محمدی گفت:
      2024/09/25 در 9:17 ب.ظ

      سلام خیلی عالی بود

      پاسخ
      • هوسم گفت:
        2024/09/26 در 10:50 ق.ظ

        سلام
        ممنون 🙏🌹

        پاسخ
    • ابراهیم موسوی گفت:
      2024/09/15 در 1:43 ق.ظ

      سلام عالی بود
      کاش مباحث پیشرفته ترش مثل وری ایشنال اتوانکدر رو هم در ادامه می‌گفتید
      ممنون

      پاسخ
      • هوسم گفت:
        2024/09/18 در 9:42 ق.ظ

        سپاس 🌹🙏

        پاسخ

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

    جستجو برای:
    فهرست مطالب دوره
    • معرفی دوره یادگیری عمیق رایگان
    • جلسه 00: یادگیری عمیق چیست
    • جلسه 01: ساختار نورون مصنوعی
    • جلسه 02: یادگیری نورون مصنوعی
    • جلسه 03: شبکه عصبی mlp
    • جلسه 04: دسته بندی با mlp و تنسورفلو
    • جلسه 05: رگرسیون با mlp و تنسورفلو
    • جلسه 06: شبکه عصبی کانولوشنی (CNN)
    • جلسه 07: شبکه عصبی بازگشتی (RNN)
    • جلسه 08: شبکه عصبی LSTM
    • جلسه 09: شبکه GRU
    • جلسه 10: شبکه ترنسفورمر
    • جلسه 11: شبکه ویژن ترنسفورمر
    • جلسه 12: شبکه عصبی GAN
    • جلسه 13: شبکه اتوانکدر
    دوره‌های جامع هوسم
    • پیاده‌سازی ChatGPT از صفر با پایتورچ
    • آموزش OpenCV: از پردازش تا بینایی
    • دیپ کاتالیست: دوره افزایش مهارت
    • پایتون برای هوش مصنوعی 🤖
    • یادگیری ماشین جامع: از مفاهیم تا پیاده‌سازی🔥
    • یادگیری عمیق جامع: از مفاهیم تا پیاده‌سازی
    • دوره متلب سوپراستارتر
    درباره هوسم

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

    • گیلان- شهرستان رودسر- شهرک انصاری- کوچه لاله 9
    • 09025469248
    • howsam.mail@gmail.com
    دسترسی سریع
    • صفحه اصلی
    • وبلاگ
    • حساب کاربری
    • سبد خرید
    شبکه‌های اجتماعی

     

    logo-samandehi
    تمامی حقوق برای آکادمی هوسم محفوظ است.
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!
      کد تخفیف شما هست و فقط
      فرصت داری ازش استفاده کنی!

      ورود

      رمز عبور را فراموش کرده اید؟

      هنوز عضو نشده اید؟ عضویت در سایت