جمعه ۲۰ مهر ۱۴۰۳ |  عضویت / ورود

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


در یادگیری ماشینی و همینطور در کل بحث هوش مصنوعی اصطلاحی داریم به نام Overfitting یا «بیش از حد». منظور کلی این است که نباید بیش از حدِ لازم به برنامه‌ای که مبتنی بر هوش مصنوعی نوشته‌اید داده اولیه یا داده آموزشی بدهید. حالا این داده در برنامه‌های مختلف، تفسیرهای مختلفی پیدا می‌کند؛ مثلاً در برنامه‌ای که قرار است بفهمد داخل یک عکس چه چیزی قرار دارد، داده بیش از حد این است که بیاییم میلیون‌ها عکس که ضرورتی ندارد به برنامه بدهیم که تحلیل کند و از آن‌ها چیز یاد بگیرد...

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

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

اما در برنامه فارسا که اخیراً منتشر کردیم من به این Overfitting برخوردم و خواستم که یک نمونه کاربردی‌اش را اینجا داشته باشیم:

در این برنامه وقتی یک کلمه قرار است غلط‌یابی شود، ابتدا چک می‌شود که در دیکشنری‌ای که برنامه دارد آن کلمه وجود دارد یا خیر؟ اگر وجود داشت که آن را غلط اعلام نمی‌کند اما اگر وجود نداشت، پردازش‌های فراوانی روی آن انجام می‌شود تا بالاخره ببیند آن کلمه غلط است یا خیر. اصول علمی می‌گوید که دیکشنری ما فقط حاوی اسم‌ها (nouns) و صفات (Adjectives) و حروف اضافه (Prepositions) باشد و در مورد افعال (Verbs)، فقط بن ماضی و مضارع افعال در دیکشنری باشد (مثلاً در مورد فعل «می‌نماییم» فقط «نما» و «نمود» باید در دیکشنری باشد) و بقیه صیغه‌های فعل را برنامه خودش صرف کند و تشخیص دهد...

حالا من آمدم برای اینکه عملکرد برنامه بهتر باشد، تمام واژگانی که خودم در سایت آفتابگردان طی ۲۰ سال تایپ کرده بودم را هم به دیکشنری اضافه کردم. و این دقیقاً باعث مشکل Overfitting شد! و بسیاری از کلمات را که قبلاً درست تشخیص می‌داد، به اشتباه اعلام می‌کرد که غلط است!

چرا؟

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

حالا این یک چالش در فارسا است! الان فارسا تا این لحظه کلماتی مانند «ننمایییم» و «نپرسیی» را اشتباهاً درست تشخیص می‌دهد و من باید فکری به حال این معضل کنم.

 

می‌دانید چه چیزی در مورد این Overfitting جالب است؟

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

 

موفق باشید؛
حمید رضا نیرومند
 

یاد این مطلب در سال ۹۸ افتادم: «اگر در زندگی یک Oracle نداشته باشیم، چه می‌شود؟ (نتیجه آزمایش کوتاه‌ترین مسیر)»


[ارسال شده در مورخه : جمعه، 20 بهمن، 1402 توسط Hamid]
[ #دانستني‌هاي IT]



بازدیدها از این مطلب: 840 بار   امتیاز متوسط :   تعداد آراء: 2   امتیاز دهید:

نظرات طرح شده

نام: [ کاربر جدید ]
ایمیل:

نظر:


اجازه استفاده از تگهای HTML را ندارید


جمع عدد 10 با 5 را در كادر زیر وارد نمایید:
(این كار برای جلوگیری از فعالیت موتورهای اسپمر است)


* توجه: نظر شما بعد از بررسی، نمایش داده خواهد شد.

[بدون موضوع]                توسط در مورخه : دوشنبه، 23 بهمن، 1402(لینک نظر)
خلاقیت؟ ماشین؟
واقعیه یا کیکه؟

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


[ ارسال جوابیه ]


محمدمهدی (امتیاز : 0)(لینک نظر)
توسط محمدمهدی در مورخه : یکشنبه، 27 اسفند، 1402
دکتر عزیز، آخه «پرسی» رو چرا می فرمایید غلطه؟ مثلاً: «چو دانی و پرسی، سؤالت خطاست»


[ ارسال جوابیه ]

    [بدون موضوع] (امتیاز : 0)
    توسط کاربر مهمان در مورخه : یکشنبه، 27 اسفند، 1402
    حالا بحث وجود بُن فعل و مصدر در دیکشنری که قطعاً مهمه، اما یکی از پردازش ها شاید خوب باشه اگر به بررسی شناسه فعل بپردازه. مثلاً «ـیی» نمیتونه شناسه باشه، اما «ـی»، چرا. «پرسیی» به دلیل وجود «ـیی» در آخر غلط تشخیص داده بشه. تعیین وضعیت و شناسایی شناسه مجاز فعل جزو پردازش ها هست؟


    [ ارسال جوابیه ]

    [بدون موضوع] (امتیاز : 0)
    توسط کاربر مهمان در مورخه : یکشنبه، 27 اسفند، 1402
    ظاهراً تا حدی اشتباه متوجه شدم؛ اما «نپرسیی» با بررسی شناسه مجاز فعل بهتر تعیین تکلیف نمیشه؟ فرض کنید خود «پرسی» موضوع بحث بود. خب «پرسی» هم در دیکشنری نباشه (اگر لغات تایپ شده آفتابگردان نبود)، تعیین وضعیت همین «پرسی» بر چه اساسی انجام میشه؟


    [ ارسال جوابیه ]

      Hamid (امتیاز : 1)
      توسط Hamid در مورخه : دوشنبه، 28 اسفند، 1402
      سلام،
      مشکل اینه که ما در دیکشنری برنامه، فعل و اسم و... رو از هم جدا و مشخص نکردیم... همه در هم هستند. بنابراین اتوی «پرسی» با فعل «پرسی» قابل تمایز نیستند...


      [ ارسال جوابیه ]