<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
    <channel>
        <title>نوشته های ali ebrahimi</title>
        <link>https://virgool.io/feed/@ali96ebrahimi</link>
        <description>دانشجوی کارشناسی ارشد هوش دانشگاه تهران و فعال در هوش مصنوعی،پردازش زبان طبیعی،علوم داده</description>
        <language>fa</language>
        <pubDate>2026-06-07 06:33:19</pubDate>
        <image>
            <url>https://files.virgool.io/upload/users/49899/avatar/4C3OcU.png?height=120&amp;width=120</url>
            <title>ali ebrahimi</title>
            <link>https://virgool.io/@ali96ebrahimi</link>
        </image>

                    <item>
                <title>End-to-End Learning یعنی چی؟</title>
                <link>https://virgool.io/@ali96ebrahimi/end-to-end-learning-%DB%8C%D8%B9%D9%86%DB%8C-%DA%86%DB%8C-vhtm8dtba2hw</link>
                <description>یکی از مفاهیم ابتدایی تو هوش مصنوعی End-to-End Learning است که تو شبکه‌های عمیق استفاده میشه، تو این نوشته سعی می‌کنم یه مرورو مختصری به این موضوع داشته باشم.فرض کنید ما یک پروژه تشخیص گفتار (speech recognition) داریم و می‌خواهیم صوت ورودی کاربر رو به متن تبدیل کنیم، تو روش‌های سنتی مدل رو به چند ماژول کوچکتر تقسیم می‌کنند، همونطور که تو شکل 1 میبینید، ابتدا سعی می‌کنند که از صوت ورودی ویژگی استخراج کنند، سپس این ویژگی‌ها را به آوا تبدیل کنند و در انتها لغات را براساس این آواها تشخیص دهند.https://www.researchgate.net/publication/281670062_Acoustic_Modeling_of_Speech_Signal_using_Artificial_Neural_Network_A_Review_of_Techniques_and_Current_Trends/figures?lo=1&amp;utm_source=google&amp;utm_medium=organicهریک از این ماژول‌ها وظیفه مشخصی را برعهده دارند و  برای هر بخش‌ نیاز به الگوریتم‌های متفاوتی است، برای بالا بردن دقت نیاز است هرکدام از این ماژول‌ها به صورت جداگانه مورد ارزیابی قرار گرفته و ارتقا پیدا کنند سپس تاثیر آن ماژول بر عملکرد نهایی مورد ارزیابی قرار گیرد. بهبود هریک از این ماژول‌ها به صورت جداگانه زمان‌بر خواهد بود. همچنین عمل بهینه‌سازی هر ماژول به صورت مستقل صورت میگیره و ماژول‌ها تاثیر چندانی بر بهبود یکدیگر ندارند.تو سال‌های اخیر و با پیشرفت یادگیری عمیق  مدل‌های End-to-End تو بخش‌های مختلفی مثل ترجمه ماشینی، پردازش تصویر مورد استفاده قرار گرفته است، ایده مدل‌های End-to-End اینه که ما می‌تونیم تمام این ماژول‌ها رو با استفاده از لایه‌های مختلف تو دیپ‌لرنینگ پیاده‌سازی کنیم و عمل یادگیری رو انجام بدیم. یعنی دیگه مراحلی که تو شکل 1 برای تشخیص گفتار بود رو نداریم و به جای اون یه مدلی داریم که صوت رو به عنوان ورودی می‌گیره و در خروجی متن تبدیل شده رو به ما تحویل میده. در این روش عمل بهینه سازی به صورت کلی روی سیستم صورت میگیره. که طبق آزمایشات انجام شده رو تسک‌های مختلف این روش‌ها عملکرد بهتری نسبت به مدل‌های سنتی از خودش نشون دادن.یکی دیگه از مزیت‌های سیستم‌های end-to-end این که شما برای پیاده‌سازیشون برای یک پروژه نیاز به دانش خیلی عمیقی در اون بخش نیاز ندارین، مثلا  اگر بخواهید تسک تشخیص گفتار رو با سیستم‌های end-to-end انجام بدیم شما نیازی به دونستن  چگونگی استخراج فیچرها از صوت نخواهید داشت. و فقط کافیه بردار ورودی رو به مدل‌تون بدین  و عمل آموزش صورت بگیره، پس از آموزش، مدل  ویژگی‌های مهم رو شناسایی می‌کند.این مدل‌ها در کنار نتایج فوق‌العاده‌ای که نشون دادند، ضعف‌هایی هم دارند 1. به داده‌های فراوانی نیاز دارند، در روش‌های سنتی ما به دانش پیشین فراوانی نیاز داریم اما در این مدل‌ها ما دانش پیشین رو نداریم و برای آموزش بهتر نیاز به داده‌های زیادی خواهیم داشت. در بسیاری از تسک‌ها هنگامی که حجم داده آموزش کم باشد مدل‌های سنتی عملکرد بهتری از خود نشان می‌دهند اما اگر حجم داده‌ها مناسب باشد مدل‌های E2E عملکرد بسیار بهتری از خود نشان می‌دهند.2. اگر تغییری در دیتاست صورت بگیرد مثلا ابعاد  داده‌های ورودی تغییر کند، در مدل‌های سنتی فقط نیاز بود ماژول او تغییر کند اما در این مدل‌ها نیاز است تمام سیستم دچار تغییر گردد.تو این مقاله سعی کردم به صورت خیلی ساده E2E رو توضیح بدم برای درک عمیق‌تر می‌تونید مقاله زیر رو هم مطالعه کنید.https://towardsdatascience.com/e2e-the-every-purpose-ml-method-5d4f20dafee4امیدوارم براتون مفید بوده باشه</description>
                <category>ali ebrahimi</category>
                <author>ali ebrahimi</author>
                <pubDate>Mon, 14 Dec 2020 12:28:18 +0330</pubDate>
            </item>
                    <item>
                <title>کرول ویکی‌پدیا فارسی</title>
                <link>https://virgool.io/@ali96ebrahimi/%DA%A9%D8%B1%D9%88%D9%84-%D9%88%DB%8C%DA%A9%DB%8C%D9%BE%D8%AF%DB%8C%D8%A7-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-nry74trzcpis</link>
                <description>https://smartproxy.com/what-is-web-scraping/crawling-vs-scrapingurce : برای انجام پروژه‌ای نیاز به متن‌های طولانی  تو موضوعات متخلف داشتم، برای جمع‌آوری این متن‌ها کجا بهتر از ویکی‌پدیا چون هم دسترسی بهش آسونه، پراکندگی موضوعی فراوانی داره، حجم متنیش هم بسیار زیادمن نیاز به مقالات پربیننده‌تر داشتم برای همین محتوای این لینک بنظرم مناسب اومد. تو این لینک شما می‌تونید لیست مقالات پربازدید تو هر موضوع رو مشاهده کنید البته برای این کار از الگوریتم‌های پیج‌رنک هم میشد استفاده کرد اما همین لینک کار من رو راه انداخت و انجامش دادم.کد پروژه به همراه یسری پیش‌پردازش اولیه رو می‌تونید تو گیت هاب من ببینید، سعی کردم خیلی ساده بنویسم که مناسب همه باشه و راحت اجرا بشه.حدود 1 گیگ دیتا که شامل 18000 مقاله میشه رو هم خودم کرول کردم اگر کسی نیاز داشت بهم ایمیل بده که براش ارسال کنم.لینک پروژه : https://github.com/aliebi/Persian_Wikipedia_Crawlerامیدوارم مفید بوده باشه براتون اگه سوالی داشتین حتما بپرسین.</description>
                <category>ali ebrahimi</category>
                <author>ali ebrahimi</author>
                <pubDate>Sun, 13 Dec 2020 18:49:03 +0330</pubDate>
            </item>
                    <item>
                <title>استفاده از ELMO برای طبقه بندی</title>
                <link>https://virgool.io/dataio/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-elmo-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%A8%D9%82%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-f2ltr3s450kv</link>
                <description>ELMo is a deep contextualized word representation that models both (1) complex characteristics of word use (e.g., syntax and semantics), and (2) how these uses vary across linguistic contexts (i.e., to model polysemy). These word vectors are learned functions of the internal states of a deep bidirectional language model (biLM), which is pre-trained on a large text corpus. They can be easily added to existing models and significantly improve the state of the art across a broad range of challenging NLP problems, including question answering, textual entailment and sentiment analysis.برخلاف امبدینگ های سنتی تر مانند word2vec,glove در مدل ELMO برای یک کلمه نمایش های متفاوتی خواهیم داشت و کلماتی که در جملات مختلف معانی متفاوتی دارند بردار های متفاوتی نیز خواهند داشت.به اینمثال دقت کنید/I read the book yesterday.Can you read the letter now?در جمله اول read  به صورت کذشته بیان شده است و در جمبه دوم به صورت حاضر می باشد.بنابراین در مدل elmo بردار های متفاوتی خواهند داشت.مدل elmo از شبکه های lstm دو طرف برای مدل کردن کلمات استفاده می کند که هم کلمات قبلی و هم بعدی آن در جمله درنظر گرفته می شود. https://www.analyticsvidhya.com/blog/2019/03/learn-to-use-elmo-to-extract-features-from-textنمایش بردار های مختلف برای کلمات براساس متن های آن یکی از محاسن این مدل می باشد که باعث بهبود در تسک های مختلف شده است.همچنین در این بخش می توانید مثالی از استفاده از ELMO در یک پروژه طبقه بندی را مشاهده کنید برای درک بیشتر موضوعhttps://github.com/aliebi/ELMOمدل های پیشرفته تر نیز مانند bert  وجود دارد که در آینده نزدیک به آن ها خواهیم پرداخت</description>
                <category>ali ebrahimi</category>
                <author>ali ebrahimi</author>
                <pubDate>Mon, 26 Aug 2019 12:36:15 +0430</pubDate>
            </item>
                    <item>
                <title>تحلیل احساسی متون با استفاده از یادگیری انتقالی transfer learning</title>
                <link>https://virgool.io/dataio/%D8%AA%D8%AD%D9%84%DB%8C%D9%84-%D8%A7%D8%AD%D8%B3%D8%A7%D8%B3%DB%8C-%D9%85%D8%AA%D9%88%D9%86-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DB%8C%D8%A7%D8%AF%DA%AF%DB%8C%D8%B1%DB%8C-%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84%DB%8C-transfer-learning-g2bp7og9c4ze</link>
                <description>در این پروژه قصد داریم که بر روی مجوعه دیتاست imdb که شامل نظرات کاربران درباره ی فیلم های مختلف  و همچنین لیبل هر نظر که مثبت ومنفی می باشد.تحلیل انجام دهیم.به این صورت که کامنت های هر فرد را مشاهده کرده و تشخیص دهیم که این این نظر مثبت می باشد.برای این کار راهکار های گوناگونی وجود دارد که راحترین آنها استفاده از تکنیک های آماری نظیر naive base و یا logistic regression می باشد که در آینده ای نزدیک با این دو روش نیز پیاده سازی خواهیم نمود این تسک رو اما در این بخش می خواهیم که پیش بینی قطبیت نظرات را با استفاده از transfer learning انجام دهیم.ابتدا توضیح مختصری در مورد یادگیزی انتقالی خواهیم داشت.این روش آموزش به این صورت می باشد.یادگیری انتقالی (Transfer Learning)، یک مسأله یادگیری در علم یادگیری ماشین (Machine Learning) است که به موجب آن، از یک مدل توسعه داده شده قبلی برای انجام وظایف جدید استفاده می شود. این مسأله، رویکردی محبوب در یادگیری ژرف (Deep Learning) است که در آن از مدل های از پیش آموزش یافته (Pre-trained Models) به عنوان نقطه شروع مسائل مبتنی بر بینایی رایانه ای (Computer Vision) و پردازش زبان طبیعی (Natural Language Processing) استفاده می شود.یادگیری انتقالی نوعی بهینه سازی (Optimization) است که باعث پیشرفت سریع یا بهبود عملکرد در هنگام مدل کردن مسائل دیگر می شود. این روش عموماً در موقعیت هایی کاربرد دارد که داده های اندکی برای مدل سازی پدیده جدید در دسترس وجود دارد. از این رو می توان به سراغ مدل های یادگیری ژرفی که پیش تر بر روی مجموعه داده های عظیم آموزش داده شده اند و با پدیده جدیدِ مورد مطالعه اشتراک مبنایی دارند، رفته و مدل یادگیری انتقالی را بر روی دانش کسب شده از مدل قبلی (در بخش های ابتدایی و مشترک دو پدیده) بنا نهاد.به طور دقیق تر در این تسک ما از سعی می کنیم از مدل زبانی عظیمی که پیشتر آموزش دیده شده است استفاده کنیم و سعی کنیم که این شبکه را جوری تنظیم کنیم که برای تسک ما که طبقه بندی متون می باشد بهترین خروجی را داشته باشد.بنابراین ابتدا سعی می کنیم که ویژگی های موثر را ازاین مدل زبانی بدست اورده و سپس با استفاده از آن بر روی جملاتی که در دیتا ست وجود دارد.جوری پیاده سازی کنیم که این جملات به صورت ویژگی های موثرنمایان شوند.سپس این ویژگی ها را در شبکه استفاده کرده و از و به دقت بالاتری دست یابیم.شما می توانید توضیحات دقیق تر این پروژه را در این لینک مشاهده کنید https://github.com/aliebi/transfer-learning-پانوشت:ممنون می شوم که اگر مناسب بود و دوست داشتید لایک و فالو کنید پروژه رو تا دوستان دیگه هم بتونند راحتر پیداش کنند.و من دیتاست مناسبی در فارسی پیدا نکردم اگه شما دیتا ست مناسبی داشتید میتونید بگید باهم رو فارسی هم انجامش بدیم.خوش و خرم باشید(:</description>
                <category>ali ebrahimi</category>
                <author>ali ebrahimi</author>
                <pubDate>Sat, 24 Aug 2019 13:57:57 +0430</pubDate>
            </item>
                    <item>
                <title>طبقه بندی متون خبری</title>
                <link>https://virgool.io/dataio/%D8%B7%D8%A8%D9%82%D9%87-%D8%A8%D9%86%D8%AF%DB%8C-%D9%85%D8%AA%D9%88%D9%86-%D8%AE%D8%A8%D8%B1%DB%8C-fuyhef3jeuws</link>
                <description>مقدمههدف از انجام این پروژه طبقه بندی متون خبری جمع آوری شده از روزنامه همشهری به عناوین مرتبط با هر حوزه می باشد.برای این کار ما دو پیکره آموزش و ارزیابی در اختیار داریم که باید مدلی را بر روی داده های آموزشی بدست آوریم که بر روی داده های تست عملکرد مناسبی داشته باشد و بتواند عمل طبقه بندی عناوین این داده ها را به درستی انجام دهد.آشنایی با داده هاقبل از شروع عملیات طبقه بندی ابتدا لازم است که با ماهیت داده آموزشی آشنا شویم لذا پس از خواندن داده واحد های خبری که ۲۵۸۰ واحد می باشند آن ها را براساس موضوع طبقه بندی می کنیم و توزیع آن ها را مقایسه می کنیم.همانطور که مشاهده می شود ما ۶ عنوان خبری داریم که که  به نسبت به تعداد دسته ها می توانیم آن ها را بالانس در نظر بگیریم در غیر این صورت باید عملیاتی برای بالانس کردن آن ها در نظر گرفته شود.حال که ماهیت داده ها ودسته ها آشنا شدیم باید این داده های خام و متون را به نوعی تفسیر کنیم که با استفاده از این تفاسیر بتوانیم عملیات طبقه بندی را انجام دهیم.پیش پردازش داده هاما با استفاده از داده های خام قادر به طبقه بندی نخواهیم بود لذا نیاز است که این متن ها به ویژگی های موثر تبدیل کرده و سپس براساس این ویژگی ها عملیات را انجام دهیم.برای این کار ابتدا هر سند را به جمله های کوچکتر تقسیم بندی می کنیم و این جملات را به کلمات تقسیم می کنیم و کلمات اضافه که در تعیین موضوعات خبری نقشی ندارند و همجنین علایم نگارشی حذف می شوند. سپس بر روی این کلمات عملیاتی مانند نرمالسازی و ریشه یابی صورت می گیرد تا بتوانیم هر کلمه واحد را به عنوان یک ویژگی موثر و واحد برای هر سند درنظر بگیریم.حال ما سندهایی در اختیار داریم که متن های آن به کلمات شکسته شده اند که در واقع ویژگی های موثر مارا تشکیل می دهند.درقدم به هر کلمه خاص یک عدد نسبت می دهیم.و هر سند را نیز بایک عدد مشخص می کنیم.حال برای هر سند ۳۰۰۰ ویژگی پرتکرار را درنظر می گیریم و با استفاده از tf-idf  هرکلمه در هر سند ویژگی های هر سند را خاص تر می کنیم تا کلمات نمایش دهنده بهتری از سند های مربوطه خود باشند و باعث شوند که اسناد در حوزه های مختلف با استفاده از این کلمات تمایز یابند و قابل تفکیک شوند.سپس از این ویژگی ها برای مدل های مطرح شده در مراحل بعدی استفاده کرده و طبقه بندی را انجام میدهیم.روش های دیگر:در این بخش فقط از کلمات به صورت یونیگرم استفاده شده است طبیعی است که از بایگرم و بالاتر نیز می توان استفاده کرد که باعث بهبود طبقه بندی می شود.و یا از ویژگی کلمات استفاده کنیم مانند posهمچنین از Word Embeddings هم می توان استفاده کرد و برای هر کلمه برداری بدست آورد و طبقه بندی را براساس نزدیگی بردار ها انجام دادکه روشی دیگری می باشد.در پایان این مرحله برای داده های آموزش و تست به ماتریس هایی با ابعاد زیر می رسیم که هر سطر نمایانگر یک سند و هر ستون نشان دهنده ویژگی ها می باشد.Train data : (2580, 3000)Test data : (862, 3000)مدل های طبقه بندیحال که هر سند را براساس ویژگی های آن مدل کردیم نیاز داریم که عمل طبقه بندی را انجام دهیم ما برای این کار از ۶ روش طبقه بندی مختلف استفاده می کنیم.و بهترین این مدل ها را ارزیابی خواهیم نمود.هریک از این مدل ها دارای هایپرپارامتر های مختلفی می باشند که متناسب با مدل باید تنظیم شوند لذا از ابتدا از رویکری استفاده نمودیم و مقادیر متناسب با هر مدل را بدست آوردیم سپس آن ها را به عنوان بهترین مقادیر برای آن مدل ها در خروجی قرار دادیم.مدل های زیر را خواهیم داشت:· Random Forest· Support Vector Machine· K Nearest Neighbors· Multinomial Naïve Bayes· Multinomial Logistic Regression· Gradient Boostingسپس خروجی هر یک از این ۶ مدل را براساس accuracy مقایسه می کنیم.که در جدول زیر خواهیم داشت:قابل مشاهده است که مدل logistic regression در بین سایرمدل ها برروی دادگان تست بهترین عملکرد را داشته است بنابراین این مدل را انتخاب کرده و ارزیابی های پیش رو را بر روی این مدل انجام میدهیم.نتایج نهاییدر این بخش خروجی های زیر را بدست برای logistic regression بدست آمد.که مقادیر precision ,recall,f1  را بر روی هر دسته بدست آورده ایم که قابل مشاهده می باشد.در ماتریس پایین نیز نحوه توزیع لیبل های پیش بینی شده و لیبل های صحیح قابل مشاهده می باشد.که همبستگی ها و نردیکی که این لیبل ها بایکدیگر دارند به خوبی قابل مشاهده می باشد.در انتها نیز با استفاده از کاهش ابعاد ویژگی ها براساس عناوین خبری مختلف که از ۳۰۰۰ بعد به ۲ تقلیل یافته است به نمودار زیر رسیدیم که نشان می دهد ویژگی های این عناوین تا چه مقدار به یکدیگر نزدیک هستند و نحوه قرار گیری آن ها به چه شکلی می باشد.
همچنین کد این پروژه را نیز می توانید به صورت دقیق تر از طریق لینک زیر مشاهده کنید لینک</description>
                <category>ali ebrahimi</category>
                <author>ali ebrahimi</author>
                <pubDate>Thu, 15 Aug 2019 18:48:40 +0430</pubDate>
            </item>
            </channel>
</rss>