علم داده



سلام

الان چند روزه که دارم یه دوره آموزشی پایتون برای پردازش زبان طبیعی را مطالعه می کنم.

این دوره از لیندا هست و لازم نیست بگم که چقدر خوبه.

البته بگم هدف این دوره آموزش خیلی دقیق و 0 تا 100 پردازش زبان نیست.

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

من خیلی از این دوره استفاده کردم. مدرس دوره آقای Derek Jodamski هم بیان خیلی خوبی داره.

این دوره را میتونید از سایت زیر دانلود کنید.

 

Download NLP with Python for Machine Learning Essential Training


سلام.

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

 

بردار های کلمه (Word vectors) یا تعبیه لغات (Word embedding)

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

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

 روش های سنتی NLP مانند One-hot encoding و bag of words در برگیرنده اطلاعاتی مانند معنی و محتوای کلمات نبودند. یعنی ارتباطات بین کلمات مانند نزدیکی محتوایی کلمات در روش های سنتی نادیده گرفته می شدند.  به عنوان مثال، روش one-hot encoding نمی تواند ارتباط ساده بین دو کلمه "سگ" و "گربه" را به این صورت که هر دو از حیوانات هستند و در context حیوانات خانگی هستند را بیان نماید. روش های ستنی برای کارهای ساده NLP مانند تشخیص ایمیل های spam مناسب هستند ولی برای کارهای پیچیده تر مانند ترجمه و Speech Recognition کارایی لازم را ندارند. در واقع روش های سنتی مانند one-hot encoding ارتباطات ساختاری(Syntactic) و معنایی(Semantic) میان کلمات را نادیده می گیرند.

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

King – man + woman = queen

به عبارت دیگر در این مثال یک معنی از بردار King  کم می شود (معنی مرد بودن) و یک معنی به بردار king اضافه می شود (معنی  زن بودن).

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

منبع

#باران_سیل_سپور

#بردارهای_کلمه

#بردارهای_لغت

#wordvectors

#word_vectors

#word_embedding

#NLP

#پردازش_زبان_طبیعی

#تعبیه لغات

 


سلام

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

این تصویر از کتاب Deep Learning with Python هست. همانطور که در تصویر نشان داده شده، loss function یا objective function خروجی مورد انتظار را با خروجی تولید شده بوسیله شبکه مقایسه می کنه تا مشخص کنه که الگوریتم چقدر خوب عمل کرده.

تابع Optimizer هم عملیات تغییر و بهنگام سازی وزن ها را انجام میده.

 


با سلام

شدیدا توصیه می کنم این کتاب را مطالعه بفرمایید.

این کتاب توسط یکی از دانشمندان داده شرکت گوگل(آقای François Chollet) نوشته شده. بسیار Practical هست. نویسنده این کتاب در پیاده سازی پروژه Tensorflow و Keras هم همکاری داشته.

 

مفاهیم پایه ای یادگیری عمیق را خیلی خوب و ساده با تصاویر گویا بیان کرده.

 

 

 

 


در این مطلب سعی می کنم خیلی ساده و شفاف تفاوت الگوریتم های Classification و Regression را توضیح میدم.
 
اول که هر دو این الگوریتم ها در دسته الگوریتم های یادگیری ماشین Supervised قرار می گیرن. در روشهای یادگیری Supervised، هدف یادگیری تابع f است که متغیر ورودی x را به متغیر خروجی y نگاشت می نماید. یعنی y=f(x)
تفاوت اصلی این دو روش در خروجی آنهاست. در Regression خروجی به صورت عددی (پیوسته) و در Classification خروجی به صورت دسته، گروه، یا برچسب (گسسته) است.

 

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

 

 

منبع:

سایت medium

 


آخرین ارسال ها

آخرین وبلاگ ها

آخرین جستجو ها