MatlabTips
892 subscribers
462 photos
72 videos
54 files
304 links
آموزش MATLAB با "استفاده از ویدئو و متن" در سطوح مبتدی تا پیشرفته
پاسخ به سوالات تخصصی:
@roholazandie
Download Telegram
🌕برنامه های مختلف توی دنیا چند خط کد دارن؟🌕

از اولین چیزهایی که تازه وارد های رشته کامپیوتر رو تحت تاثیر قرار میده تعداد خط کدهای یک برنامه ست. به همین خاطر از اولین چیزهایی که توی درس مهندسی نرم افزار یاد میدن اینه که به جای توجه به تعداد خط کد باید به پارامترهای دیگه ای توجه کنیم تا بگیم یک کد خوبه! این صد البته درست هست. اما رابطه ای تقریبا خطی بین تعداد خط کد و پیچیدگی برنامه وجود داره. شاید برای برنامه های چند صد خط کدی نشه این حرف رو زد اما برای برنامه های بزرگتر قطعا این رابطه وجود داره.
اما تا به حال به این فکر کردید که چند خط کد پشت بزرگترین نرم افزار های دنیاست. اینجا یک لیست از اون ها رو میارم. تصویر اصلی رو با جزییات بیشتر رو اینجا میتونید ببینید:
برنامه های ساده آیفون:‌ حدود ده هزار خط
نخستین نسخه یونیکس: حدود ده هزار خط
نخسین نسخه فوتوشاپ: صد هزار خط
برنامه اولین شاتل فضایی:‌ چهارصد هزار خط
چهارده نسخه جنگ صلح تولستوی: یک میلیون خط
ژنوم باکتری: یک میلیون و صد هزار خط
برنامه جنگنده F22: یک میلیون و هفتصد هزار خط
تلسکوپ هابل:‌ دو میلیون خط
برنامه کنترل یک پهپاد آمریکایی:‌ ۳.۵ میلیون خط
برنامه ی مریخ نورد curiosity: پنج میلیون خط
گوگل کروم: ۶.۷ میلیون خط
فایرفاکس: ۹.۷ میلیون خط
اندروید: ۱۲ میلیون خط
برنامه MySQL: دوازده میلیون خط
جنگنده F-35: بیست و چهار میلیون خط
ویندوز ۷: ۴۰ میلیون خط
ویندوز ایکس پی: ۴۰ میلیون خط
برخورد دهنده عظیم هادرون(LHC): ۵۰ میلیون خط
ویژوال استودیو ۲۰۱۲: پنجاه میلیون خط
کل فیس بوک: ۶۲ میلیون خط
ژنوم موش: ۱۲۰ میلیون خط
گوگل(تمام سرویس هایش): دو میلیارد خط
ژنوم انسان: ۳۳۰۰ میلیارد خط

(منظور از "خط کد" برای ژنوم هر جفت از چهار پروتیین A,T,C,G است که منطق قرار گرفتن کدهای ژنتیکی است)
همانطور که میبینید بشر به تدریج ماشین های پیچیده و پیچیده تری ساخته است. پروژه ای که زمانی جاه طلبانه بوده اکنون در گوشی شما در جیبتان در حال اجرا است! اما نکته جالب تر ماجرا قرار دادن کدهای بیولوژیکی و کتاب ها هم هست. تصور سنتی از برنامه فقط به عنوان چیزی که در یکی از زبان های برنامه سازی نوشته می شود دیگر کار نمیکند. دنیای اطراف ما پر است از برنامه. برخی از این برنامه ها را انسان نوشته و برخی کار طبیعت هستند. برخی را برنامه نویس ها ایجاد کرده اند و برخی را غیر برنامه نویس ها! آن چیزی که برای هر کسی شگفت انگیز است مقایسه ژنوم انسان با دیگر برنامه هاست. ۳۳۰۰ میلیارد خط کد! چیزی که سه مرتبه بزرگی (order of magnitude) (به صورت لگاریتمی هزار برابر) بزرگ تر از بزرگترین ماشین ساخت بشر یعنی گوگل است! ژنومی که در هر تکه پوست و ناخن یا خون شما وجود دارد!!
اما نکته دیگری وجود دارد که نباید از آن غافل شد. رشد حجم کدهای ساخت بشر در طی فقط سی سال از هزار خط به چند میلیارد خط رسیده است. یعنی یک میلیون برابر شده است! این رشد نمایی نشان دهنده یک قانون است که درباره آن بحث میکنیم
🚦از کجا شروع کنم؟🚦

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


https://machinelearningmastery.com/start-here/
🌕کانولوشن در مغز🌕

به تصویر زیر نگاه کنید. این یک تصویر سیاه و سفید است اما فقط با چند خط رنگی ما کل آن را رنگی میبینیم!‌ چطور چنین چیزی ممکن است؟
بر اساس نظر Bart Anderson یکی از پژوهشگران حوزه بینایی، نورون های عصبی بخش پردازش رنگی مغز دارای receptive field های بزرگی می باشند و وقتی می خواهند خروجی درست کنند بر روی تکه های بزرگتری از تصویر میانگین میگیرند که باعث می شود در نهایت مغز کل تصویر را رنگی ببینید!
اما receptive field چیست؟ می توانید در ویکی پدیا آن را بخوانید اما آنچه برای ما مهم است کارکرد receptive field‌ است. آن ها ساز و کاری دارند که در ریاضیات به اسم convolution می شناسیم. در شبکه های عصبی هم دقیقا از همین روش استفاده می شود. یعنی ما عملگر convolution را بر ورودی های یک لایه شبکه عصبی اعمال می کنیم. کانولوشن بسیار ساده است. شما یک پنجره (که به آن کرنل هم می گویند) را بر روی ماتریس ورودی در نظر میگیرید (در شکل زیر ناحیه سه در سه زرد رنگ) و هر کدام از مقدار های آن پنجره را بر روی تصویر اصلی ضرب و خروجی را در یک ماتریس دیگر ذخیره می کنید. به طور مثال در اولین مکان یعنی زمانی که پنجره بر روی گوشه سمت چپ بالا هست. ضرب به صورت زیر می شود:

[1,0,1;0,1,0;1,0,1].*[1,1,1;0,1,1;0,0,1]=4

جواب ۴ می شود که اولین خانه ماتریس صورتی سمت راست است. دقت کنید این ضرب ماتریسی نیست بلکه صرفا ضرب نظیر به نظیر و جمع کردن ساده است. سپس پنجره را یک واحد می لغزانید تا دوباره همین کار را بکنید. تصویر زیر این فرآیند را نشان می دهد.
با توجه به نوع ضرایب پنجره اتفاق های مختلفی در خروجی می افتد اما در ساده ترین حالت شما صرفا میانگین پنجره را می گیرید. در مثال چشم این میانگین باعث می شود که پیکسل های همسایه که رنگی ندارند هم رنگ بگیرند و ما کل تصویر را رنگی ببینیم.
در متلب و پایتون می توانید کانولوشن را حساب کنید
Media is too big
VIEW IN TELEGRAM
یک نمایش خیره کننده از نحوه کار شبکه های عصبی مختلف

منبع: https://www.cybercontrols.org/neuralnetworks
با توجه به اینکه میخواهم در مورد نوع مطالب کانال تصمیم بگیرم، کدام نوع مطالب برایتان جذاب تر است؟
Anonymous Poll
28%
متون طولانی همراه با شبیه سازی و کد
10%
مطالب کوتاه و خلاصه و مفید
62%
هر دو
This media is not supported in your browser
VIEW IN TELEGRAM
شبیه سازی تبدیل آب به یخ در سطح مولکولی
@matlabtips
🎷موسیقی ماشینی🎷

مدل های زبان برای دنباله ای از کلمات هستند اما می توانند برای چیزهای دیگری هم استفاده شوند! در زبان طبیعی این دنباله همان جمله ها و متن است اما در موسیقی دنباله نوت ها هستند! مدل های زبانی اخیرا پیشرفت بسیار زیادی داشته اند به همین خاطر عده ای همان مدل ها (مثل BERT, TransformerXL و Seq2Seq) را بر روی نوت های موسیقی اعمال کرده اند. از آنجایی که این مدل ها زایا (generative) هستند بنابراین می توان از مدل خواست تا دنباله جدیدی ایجاد کند!‌ نتیجه بر روی موسیقی بسیار جالب است. شما می توانید موسیقی های جدیدی تولید کنید! در زیر لینکی به وبسایت آورده شده که شما می توانید به صورت آنلاین بدون نصب چیزی با آن کار کنید و با هر بار زدن دکمه یک موسیقی جدید تولید کنید.

لینک وبسایت:
https://musicautobot.com

لینک وبلاگ:
https://towardsdatascience.com/creating-a-pop-music-generator-with-the-transformer-5867511b382a

کدها بر روی گیت هاب:
https://github.com/bearpelican/musicautobot

یک نمونه از موسیقی ماشینی:
https://soundcloud.com/andrew-shaw-27/la-bamba-variation-1
🕸یک روز دیگه هم گذشت و هنوز از انتگرال استفاده نکردم!🕸

خیلی هاتون این لطیفه رو شنیدید و بهش خندیدید اما کجای کار اینقدر اشتباهه؟ ما همیشه انگشت اتهام رو سمت سیستم آموزشی میگیریم و صدالبته تا حد زیادی هم بیراه نیست اما اینجا میخواهم قدری دقیق تر فکر کنیم که چرا اینقدر «علم و دانش» از دید جامعه بی فایده شده؟!

اولین سوالی که پیش می آید برای بزرگتر هاست کسی که در طول روز کارش با یک برنامه مثلا اکسل است. باید در نهایت تعدادی عدد را جمع و ضرب کند یا کسی که حتی پزشک می شود! چه فایده ای دارد که این همه ریاضی بخواند؟ من سعی میکنیم در طی یک دیالوگ ذهنی به چند حقیقت نزدیک شویم

- ما احتیاجی به یادگیری چنین مفاهیمی نداریم چون از آن استفاده ای نمی کنیم!‌ بهتر است این وقت را صرف یادگیری مهارت های زندگی کنیم اینکه چطور خشم خودمان را کنترل کنیم یا چطور پولمان را مدیریت کنیم یا حتی چطور با جنس مخالف ارتباط درست و سالمی بر قرار کنیم

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

- خوب بگو ببینم تو مثلا چه استفاده ای کردی؟ پولی برایت درست کرد؟ خوشبخت ترت کرد؟

+ ببین اینطوری نباید به قضیه نگاه کنی! انتگرال آچار فرانسه نیست که من هر روز استفاده کنم. بله مطمننا اگه من انتگرال بلد نبودم نمیتونستم از کار الانم پولی در بیارم!

- آره میفهمم چی میگی درس هات رو بالاخره باید پاس کنی! حداقل باید یه لیسانس داشته باشی!

ادامه لینک زیر:
https://vrgl.ir/fVTzY
📒ماشین های نویسنده!🖌


برای شما هم حتما پیش آمده است که شروع به نوشتن مثلا برای درس انشا می کنید اما انگار ذهنتان یاری نمیکند و جملات رو نمی توانید به پایان برسانید. خیلی ها می گویند باید زیاد خواند تا بتواند نوشت! یا از یک دستیار استفاده کرد که دستی در نوشتن دارد. به هر حال انجام چنین چیزهایی ساده نیست. به عبارتی نوشتن یک کار واقعا «انسانی» است! یعنی انسان فقط می تواند آن را انجام دهد.

ری کورزیل (ray kurzweil) یکی از پیشگامان آینده نگری و هوش مصنوعی در کتاب خود «عصر ماشین های معنوی» (the age of spiritual machines) به روند رشد هوش ماشینی نگاه جالبی دارد. او می گوید زمانی که هنوز کامپیوتر ها در انجام بازی شطرنج ضعیف بودند همه ادعا می کردند که این کار فرای ماشین است اما زمانی که ماشین توانست آن را انجام دهد معیار ها به کلی عوض شد و شروع کردند به ادعای اینکه ماشین ها نمی توانند اشیا یا چهره را از هم تشخیص دهند این یک کار انسانی است و باز هم ماشین توانست این کار را بکند و این روند تا به امروز ادامه داشته است.

خبر جدید این است که بهتر است دنبال یک معیار جدید برای انسانی بودن بگردید چون دیگر نوشتن هم دیگر خیلی شما را از ماشین جدا نمی کند! قدرت مدل های زبانی جدید به حدی رسیده است که داستان سرایی می کنند شما فقط کافی است کوچکترین جهت را به آن ها بدهید! آن ها هزاران کتاب (BookCorpus) کل ویکی پدیا (Wiki dumps) و خیلی چیزهای دیگری که شما حتی اسمشان را نشنیده اید خوانده اند و می توانند در موردشان حرف بزنند آن ها از سلایق لباس های لیدی گاگا تا پارک ملی یلوستون و حتی فقه اسلامی را می دانند!! و در مورد آن ها می توانند برای شما «صحبت کنند»

خب ممکن است فکر کنید دیگر به سرم زده ولی اینجا مطالب علمی ای که قرار می دهم همیشه با کد و دمو هستند. اینجا جمع نشده ایم تا داستان های علمی تخیلی ایزاک آسیموف را مرور کنیم بلکه با خود بدنه سخت علم روبرو می شویم و آن را با هم به اشتراک می گذاریم. نمونه زیر را خودم بر اساس دمو درست کردم. جملاتی که تایپ میکنم در مورد غذای ایرانی است و بقیه (قسمت های آبی)‌ داستان های معنا داری است که مدل زبانی می چیند و جلو می رود. شما هم می توانید امتحان کنید و قطعا از عملکرد آن شگفت زده می شوید. منبع کد اصلی ریپوی فوق العاده شرکت huggingface بر روی پلتفرم بسیار فراگیر pytorch است که بهترین نقطه شروع برای حرفه ای های NLP است.
This media is not supported in your browser
VIEW IN TELEGRAM
مدل زبانی GPT2 Large در مورد غذای ایرانی حرف می زند!
خودتان امتحان کنید

(اگر گیف بالا را روی گوشی نمیبینید از کامپیوتر نگاه کنید)
🦋دکوراتورها در پایتون🦋

یکی از کاربردهای تابع این است که از تکرار کد ها جلوگیری می کند. مثلا شما یک تابع می نویسید که از فایل چیزی را بخواند یا مثلا عدد اول شماره n ام را بدست بیاورد. اینها مثال های ساده ای هستند که همه شما می دانید. اما تا به حال به این فکر کرده اید که گاهی بعضی کارها برای خود توابع هم تکراری می شود و باید یک روش ساده برای جلوگیری از تکرار وجود داشته باشد. مثلا فرض کنید شما می خواهید بدانید هر تابع شما چقدر زمان میگیرد.
یا اینکه بخواهید لاگ از تابع بگیرید یا حتی آن را به صورت موازی اجرا کنید. برای همه این کارها نیاز هست یک عملیات تکراری را برای تابع انجام دهیم. گویی یک تابع برای تابع نیاز داریم به این صورت که مثلا تابع را به آن پاس بدهیم و آن تابع برایمان زمانش را محاسبه کند یا آن را لاگ کند.

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

https://vrgl.ir/r8j6m
🧠«زال» : یک سرویس پردازش متن تماما فارسی مدرن!🧠

یکی از سرویس های بسیار خوب برای پردازش زبان طبیعی که توسط یکی از همکاران سابق من ایجاد شده ست نقطه شروع مناسبی برای کسانی است که به دنبال گرفتن سرویس یا یادگیری در مورد آن هستند. «زال» یک سرویس فارسی است که شامل ریز سرویس های زیر می شود:

- طبقه بندی متون
- تحلیل تمایل
- تحلیل احساسات
- تشخیص ناسزا
- تشخیص موجودیت های نامدار
- یافتن کلمات مشابه

این سرویس هنوز در مراحل اولیه خود بسر می برد ولی به سرعت در حال پیشرفت است!

https://getzaal.com/
Once upon a time a young rabbinical student went to hear three lectures by a famous rabbi. Afterwards he told his friends: “The first lecture was brilliant, clear and simple. I understood every word. The second was even better, deep and subtle. I didn’t understand much, but the rabbi understood all of it. The third lecture was by far the finest, a great and unforgettable experience. I understood nothing, and the rabbi didn’t understand much either.”
-Neils Bohr

گفتند: ما را تفسیر قرآن بساز. گفتم: تفسیر ما چنان است که می‌دانید. نی از محمد! و نی از خدا! این «من» نیز منکر می‌شود مرا. می‌گویمش: چون منکری، رها کن، برو. ما را چه صداع (دردسر) می‌دهی؟ می‌گوید: نی. نروم! سخن من فهم نمی‌کند. چنان که آن خطاط سه گونه خط نوشتی: یکی را هم او خواندی هم غیر او... یکی او خواندی، لا غیر ... یکی نه او خواندی نه غیر او. آن خط سوم منم که سخن گویم. نه من دانم، نه غیر من!

مقالات شمس تبریزی
🦋دکوراتورها در پایتون و متلب: استفاده برای برنامه سازی پویا🦋

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

https://bit.ly/2m0Mcde
15 years ago:
Steve Ballmer (CEO): linux is a cancer

Now:
Satya Nadella (CEO): Microsoft loves linux!


https://bit.ly/2krbSzy
@matlabtips
🔵اولین کتاب نوشته هوش مصنوعی!!🔵

«گریگورٍ سوسک» اولین کتاب داستانی نوشته هوش مصنوعی با سبک و سیاق برگرفته از کتابهای کافکا و موتور قدرتمند تولید متن OpenAI است. صد البته تا حدودی دخالت انسانی در ویرایش آن دخیل هست ولی در مجموع کل داستان و تم آن کاملا ساخته و پرداخته هوش مصنوعی ست. می توانید کتاب را از آمازون ببینید. اگر دقت کنید نویسنده آن را Artificial Intelligence زده اند!!
قسمتی از کتاب:

"He was home alone, and even though he tried to think of nothing bad that had happened to him since his family moved, he could not suppress a smile at this thought. They had moved out, obviously, and although Gregor was glad that they had taken his sister with them, he was nevertheless painfully aware that they would have to drive him back into his room if he were to be truly sure he could be sure that nothing bad had happened. This meant that his family now faced the difficult decision of whether to send him back or to keep him. They had done their homework, established the schedule that would allow them to arrive at his room on time, and, most of all, he had never seen his mother until then. Now, though, he did see her, once in the morning while his sister was still lying quietly at the table, and the second time after everyone had eaten their meal at midday as his mother would go back to sleep. Gregor's mother at first denied that she had ever wanted to see her mother, but later on did reveal that she had done exactly that, and that she would often wake up and say to her mother "you're doing so much sewing again today!", as if she were still there. Gregor's sister also did sometimes see her mother, but only when she asked politely and with a hint of anger as if she wanted to test the strength of her mother's words."
🔵خرافات در ماشین🔵

همانطور که در یکی از پست های قبلی هم اشاره کردیم یکی از ویژگی های سیستم های قدرتمند شناختی مثل مغز خودمان «الگوزدگی» (patternicity) است. به این معنا که در این سیستم ها چیزی به اسم «تصادفی» تعریف نشده است: همه چیز حکمتی دارد و الگویی! بنابراین چنین سیستم های شناختی ای شروع به استخراج الگو میکنند حتی زمانی که در واقع الگویی وجود ندارد! یکی از نمود های چنین وضعیتی پاریدولیا (Pareidolia) است. نمونه های آن زیاد هستند مثل دیدن تصویر چهره ای در ماه یا پیدا کردن تصاویر حیوانات در تاریکی! نکته جالب اینجاست که با دستکاری شبکه های عصبی عمیق هم می توان چنین حالتی را بازسازی کرد. یک نمونه معروف آن deep dream گوگل است که با آن میتوانید از تصاویر معمولی الگوهایی شبیه به سر و بدن حیوانات بیرون بیاورید. اینجا می توانید کدهای آن را ببینید یا آنلاین آن را امتحان کنید.

در برخی از حالت های دستکاری شده آگاهی (altered states of consciousness) بخصوص زمانی که افراد از روانگردان هایی مانند اسید یا LSD استفاده کرده باشند چنین تغییراتی واضح تر و بیشتر شبیه به deep dream است. در این وضعیت ها مغز وارد حالتی می شود که الگوها را به طرزی اغراق آمیز به جهان اطراف افکنش (project) می کند. البته همانطور که گفتیم خیلی به مغز در حالت عادی تان هم اعتماد نکنید این ماشین پیچیده حتی در حالتی که بر روی مواد نیست تمایل شدیدی به خیالبافی و الگوسازی های نامرتبط دارد. یکی از ریشه های اصلی بایاس های شناختی میانبرهای ذهنی است که مبتنی به چنین ساختارهایی هستند. این بایاس ها تیغ دو لبه هستند همزمان به ما امکانات زیادی برای تحلیل سریع دنیای اطراف می دهند ولی در عین حال ما را به موجوداتی «ذاتا» خرافاتی بدل می کنند. یک مثال ساده: حتما برای شما هم پیش آمده است که حین حرکت در پیاده رو سعی کنید بین جدول های کف خیابان حرکت کنید و بر روی لبه ها قدم نگذارید! مهم نیست خودتان را خرافاتی بدانید یا خیر برای لحظه ای ذهنتان شما را متقاعد می کند که این کار باید انجام شود در غیر این صورت اتفاق بدی می افتد!! این یک نمونه بسیار کوچک است! توانایی ذهن ما برای باور به الگوهایی که حتی یکبار برای ما تکرار نشده است با توجه به حجم وسیع باورهای پیشنی (prior beliefs) شگفت انگیز است.
This media is not supported in your browser
VIEW IN TELEGRAM
یک نمونه از الگوزدگی در شبکه های عصبی با نام
deep dream
یک ویدیو طولانی تر