دوش آب سرد و یک چالش شخصی

داستان آشنایی من با دوش آب سرد برمی‌گرده به اواخر پاییز سال ۹۷. وقتی هوا داشت کم کم سرد می‌شد و بدن من باز داشت مثل سال قبلش واکنش نشون می‌داد. حقیقتا من کم سرما می‌خورم، اما زیاد حس سرماخوردگی بهم دست میده. همون حسی که معمولا روز قبل سرماخوردن داریم، با این تفاوت که در حالت عادی روز بعدش مریض می‌شیم و بعد دو سه روز استراحت خوب می‌شیم، اما این حالت احساس سرماخوردگی من یکی دو هفته طول می‌کشید تا بالاخره بره پی کارش! این احساس سرماخوردگی هم که دارم ازش حرف می‌زنم ترکیب ناخوشایندی بود از عطسه‌های گاه و بیگاه، بدن درد خیلی خفیف، دائما پر شدن بینی، و چیزهایی از این دست.

پاییز ۹۷ دوست نداشتم قصه سال قبلش تکرار شه. برای همین شروع به گوگل کردن کردم و با پدیده جذابی آشنا شدم: حمام یخ یا ice bathing. اونجوری که من دستگیرم شد این یه سنت تو کشورهای اسکاندیناویه که در طول سال به مناطق یخ زده میرن، یخ رو می‌شکونن، لخت می‌شن و برای چند دقیقه میرن تو آب تقریبا صفر درجه! معتقدن این بدنشون رو مقاوم‌تر و قوی‌تر می‌کنه و باعث میشه سالم بمونن.

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

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

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

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

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

نحوه دوش گرفتنم هم اینطوری بود که اوایل شروع این چالش، اول پاهام و دستام رو زیر آب میگرفتم و بعد از اینکه بدنم کمی عادت کرد کامل می‌رفتم زیر دوش. اما بعد از چند روز به این نتیجه رسیدم این روش مال ترسوهاست و از اون به بعد یک دفعه و در یک لحظه تمام بدنم رو زیر آب قرار می‌دادم.

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

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

نظر بدید

تابع sorted در python3 و تفاوت آن با python2 (چرا عاشق پایتونم)

تابع sorted یه تابع آماده (built-in) تو پایتونه که برای استفاده ازش نیاز به اضافه کردن هیچ پکیجی ندارید. این تابع در حالت خیلی ساده یک iterable به عنوان ورودی می‌گیره و مرتب شده‌اش رو در خروجی برمی‌گردونه.

نکته مهم در مورد این تابع اینه که تو Python3 نسبت به Python2 یه تغییر به ظاهر کم‌اهمیت، اما در واقع خیلی مهم و کاربردی کرده. برای اینکه توضیح این تغییر، تابع sorted رو توی هر دو نسخه پایتون تعریف میکنم.

تابع sorted در Python2

تابع sorted در پایتون۲ به این شیوه صدا زده میشه:

که این یعنی ورودی iterable اجباری (همون چیزی که میخوایم مرتبش کنیم) و cmp و key و reverse اختیاری هستند.

حالا این ورودی‌های اختیاری چی‌ هستند؟

cmp: یک تابعه که دو تا ورودی می‌گیره و یک مقدار مقایسه‌پذیر به عنوان خروجی برمی‌گردونه. این تابع در واقع به الگوریتم مرتب سازی میگه که بین دو تا ورودی کدومشون از اون یکی بزرگتره. اگر خروجی تابعی که به cmp داده میشه بزرگتر از صفر باشه یعنی ورودی اول بزرگتره، کوچکتر از صفر باشه یعنی ورودی دوم بزرگتره، و اگر مساوی با صفر باشه یعنی هر دو ورودی برابرند.

key: یک تابعه که یک ورودی و یک خروجی داره. در واقع این تابع کلیدی که در مقایسه استفاده میشه رو به الگوریتم مرتب‌سازی میده. مثلا اگر قرار باشه لیستی از استرینگ‌ها رو مقایسه کنیم، فکر خوبیه که str.lower رو به عنوان key پاس بدیم تا استرینگ‌ها اول به حروف کوچیک تبدیل بشن و بعد مرتب شن.

reverse: اگر این مقدار برابر False باشه مرتب سازی به شکل صعودی، و اگر True باشه مرتب سازی به شکل نزولی انجام میشه. به طور پیش‌فرض False است.

خب فکر می‌کنم تا الان تا حد خوبی با sorted تو پایتون ۲ آشنا شده باشیم. حالا ببینیم این تابع تو پایتون۳ چه تغییری کرده.

تابع sorted در Python3

تفاوتی که به چشم میاد حذف شدن ورودی cmp از این تابعه. چرا cmp حذف شد؟

چند جواب برای این سوال وجود داره. اما بهترینش اینه: سادگی! پایتون برمبنای یه سری اصول و قوانین ساده ولی مهم ساخته شده و تمام ویژگی‌های اون روی این چند ویژگی ساده بنا شده‌اند (دقیقا دلیل اینکه من عاشق پایتونم همینه). طراحان این زبان سعی می‌کنند تا این زبان رو حتی ساده‌تر از قبل کنند و یکی از کارهایی که برای این صورت گرفت حذف cmp بود. cmp یکی از بازماندگان C در پایتون بود و وقتی پایتون۳ اومد دیگه وقتش بود که با این تابع خداحافظی بشه، چون عملا خیلی کاربردی نداشت و این key بود که همه کارها رو انجام می‌داد.

حالا اگر اصرار داشتیم که موقع استفاده از پایتون۳ از cmp استفاده کنیم چی؟ این مشکل اخیرا برای من پیش اومد. بذارید اینجوری بگم که من یه شبکه عصبی دارم که دو تا ورودی میگیره و به من میگه کدوم از اون یکی مهمتره. حالا میخوام یه سری ورودی رو بر مبنای اهمیتشون مرتب کنم. راحت‌ترین راهی که به نظرم اومد استفاده از یه تابع compare بود. اینجوری که این تابع دو تا ورودی رو بگیره و بگه طبق نظر شبکه عصبی کدوم اینا از اون یکی مهمتره (بزرگتره). اما من تمام کدم رو با پایتون۳ نوشتم و علاقه‌ای نداشتم فقط به خاطر یک خط برگردم به پایتون۲ و یه سری چیزهای دیگه رو از دست بدم. پس چیکار کنم؟

خب راه حل ساده‌ است. داخل پکیج functools یه تابع وجود داره به نام cmp_to_key. همونطوری که از اسم این تابع معلومه، یه فانکشن compare میگیره و اون رو تبدیل میکنه به یک تابع key! جادویی به نظر میاد؟ شاید. شاید اگر هر زبان دیگه‌ای بود پیاده‌سازی این تابع صدها خط کد و لاجیک پیچیده‌ای نیاز داشت. اما با پایتون همه کار ساده و هوشمندانست. پیاده سازی این تابع رو با هم ببینیم:

این تابع یک کلاس تعریف می‌کنه و داخل اون یه سری توابع مقایسه‌ای که تو پایتون۳ معرفی شدند رو تعریف می‌کنه. حالا وقتی که روی آبجکت‌های این کلاس عملگرهای مقایسه‌ای مثال > < = اجرا بشن این توابع فراخوانی می‌شن و میگن که مثلا کدوم آبجکت از اون یکی بزرگتره. در واقع این تابع یک کلید برای مقایسه برمی‌گردونه که قوانین مقایسه این کلید از همون قوانین تابع compare پیروی می‌کنند. هوشمندانه نیست؟ یه سری امکانات و قواعد اولیه (تعریف توابع عمگرهای مختلف برای آبجکت داخل کلاس اون آبجکت) که منجر به ساده شدن کارهای به ظاهرا پیچیده (تبدیل توابع cmp به توابع key) میشه.

نظر بدید

من چطوری تافل ۱۱۱ گرفتم

تا الان چندین بار شده که تجربه خودم رو از تافل برای دوستام شفاهی توضیح دادم و مدتهاست که می‌خوام این تجربه رو اینجا کتبی بنویسم اما فرصت نمیشد. الان سعیم بر اینه که به طور نسبتا خلاصه، تجربه شخصیم از انگلیسی خوندن و امتحان تافل دادن رو اینجا بنویسم. لطفا توجه داشته باشید این‌ها تجربیات منه و روشیه که برای من کار کرد و نه معتقدم که به درد همه می‌خوره و نه ادعا دارم روش من بهترین روشه. نمره نهایی من ۱۱۱ بود. (Reading 30 – Listening 28 – Speaking 27 – Writing 26)

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

همه این تجربیات پراکنده و از روی علاقه بودند. تا اینکه حدودهای سال ۹۰ خودم رو ملزم کردم که برم کلاس زبان. یک سال و نیم رفتم کلاس زبان ایران-استرالیا تو میدون ولیعصر تهران که خب تجربه خوبی بود. راستش مطمئن نیستم که چیزی از اون کلاسها یاد گرفتم یا نه. ولی احتمالا تو افزایش اعتماد به نفسم و مرور گرامری که قبلا تو مدرسه یادگرفته بودیم تاثیر گذار بود. بعد از حدود یک سال نیم و وقتی همش دو ترم مونده بود تا کتاب آخر هم تموم بشه حس کردم دیگه چیزی از این کلاس‌ها یاد نمیگیرم و ادامه دادنش هدر دادن پول و وقته. همین شد که رهاش کردم.

از بعد از اون تقریبا هیچوقت انگلیسی رو منظم نخوندم، اما تقریبا همیشه باهاش درگیر بودم. برای مثال تمام سعیم رو میکردم تا کتابهای رشته خودم (کامپیوتر) رو به انگلیسی بخونم، چون معتقد بودم که اینجوری بهتر یاد میگیرم. یا حتما سریالها (به خصوص سریال Friends) رو با زیرنویس انگلیسی می‌دیدم چون معتقد بودم اینجوری شوخی‌ها رو بهتر و بیشتر درک می‌کنم و بیشتر می‌خندم. در مجموع سعی می‌کردم یادگرفتن زبان رو تبدیل به یه اتفاق مستمر، ولی پراکنده، و روزمره بکنم. دلیلم هم این بود که اولا عاشق یادگرفتنش بودم، دوما تو چشم اندازی که برای آینده خودم داشتم باید به این زبان مسلط می‌شدم، و سوما می‌دونستم که بدون انگلیسی از خوندن و فهمیدن کلی محتوای خوب محروم میشم.

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

تا اینکه رسیدم به نزدیک‌های اپلای و بعد از اینکه به این نتیجه رسیدم که می‌خوام برای دانشگاه‌های کانادا اپلای کنم، لازم شد که امتحان زبان بدم. تافل رو انتخاب کردم چون دوستای دیگه‌ام اکثرا تافل داده بودند و اینجوری می‌شد از اونا برای منابع راهنمایی بگیرم و چون به نظرم اومد که امتحان سرراست‌تریه. اینجوری شد که برای پنج هفته بعد تو سنتر سنجش ثبت نام کردم و تنها پنج هفته فرصت داشتم که بخونم. خیلی استرس زاست نه؟

ادامه این نوشته

نظر بدید

چرا Numpy سریعتره و کندوکاو در اعماق چند دستور

یک آرایه نامپای در واقع با ترکیب metadata تعریف میشه (مثلا تعداد ابعاد، shape، نوع داده) و خود داده‌ها. داده‌ها تو بلاکهای پیوسته و همسان مموری (RAM) ذخیره میشن. تفاوت اساسی بین یه آرایه و یه لیست نامپای در واقع همین پیوسته بودن داده‌ها در مموریه. همین تفاوته که باعث میشه نامپای اینقدر سریعتر و بهینه‌تر باشه.

چرا این موضوع مهمه؟ چند تا از دلیلاش رو اینجا می‌نویسم:

  • محاسبات روی آرایه میتونن خیلی بهینه با زبان سطح پایین C نوشته شن ( عملا بیشتر نامپای با C نوشته شده). با دونستن آدرس بلاک مموری و نوع دیتا (Data Type) محاسبات تبدیل به یه حلقه ساده روی تمام آیتم‌ها میشه. در صورتی که همین محاسبات با پایتون کلی overhead داره (چون باید آدرس هر عضو لیست جداگونه به دست بیاد).
  • همسایگی داده‌ها در حافظه باعث میشه که بشه از کش سی‌پی‌یو استفاده کرد. اینطوری که سی‌پی‌یو بخشهایی از حافظه که داده توشه رو تو رجیستر خودش کش میکنه و اینجوری سرعت محاسبات به شدت بالا میره.
  • همسایگی حافظه باعث میشه نامپای بتونه از دستورات محاسبات برداری‌ای که در سی‌پی‌یوهای جدیدتر هست استفاده کنه. مثلا تکنولوژی SSE و AVX تو اینتل و XOP تو AMD.

در ادامه کاری که میخوایم بکنیم اینه که تو چند دستور ساده ناپای عمیق‌تر بشیم و از نظر استفاده از حافظه و همینطور سرعت محاسبه بررسیشون کنیم.

ادامه این نوشته

نظر بدید

یه کتاب خوب تا آخر امروز مجانی شده!

سایت packtpub.com که هر از گاهی کتابهای خوب رو برای مدت محدود برای دانلود مجانی میذاره، امروز کتاب Learning Data Mining With Python رو گذاشته و تا آخر امشب وقت دارید تا با عضو این سایت شدن کتاب رو دانلود کنید.

این کتاب رو دکتر رابرت لیتون نوشته و طبق گفته خودش هدفش این بود که آدمهایی که برنامه نویسی بلدند و به طور کاربردی درگیر دیتا ماینینگ و ماشین لرنینگ کنه. این کتاب سعی میکنه تا حد امکان درگیر تئوری و ریاضی الگوریتم‌ها نشه و مسائل ماشین لرنینگ رو با زبون پایتون و پکیج Sci-Kit Learn حل کنه. در کل اگر برنامه‌نویس هستید و دوست دارید دستی به دیتا ماینینگ بزنید و در عین حال درگیر ریاضیات سنگینش نشید، این کتاب برای شما به نظر کتاب مناسبی میاد.

کتاب رو میتونید از این لینک دانلود کنید

Image result for learning data mining with python robert layton

نظر بدید

یادگیری ماشینی چیزی جز ریاضی نیست

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

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

وقتی که تازه با این شبکه‌های عصبی آشنا میشیم، این اتصالات و این نرون‌های گرافیگی چیزیه که تو همه کتابها و مقاله‌ها و ویدیو‌های آموزشی می‌بینیم. اما این نمایش گرافیکی علیرغم قابل فهم بودن و قشنگ بودن، یه حقیقت مهمی رو از چشم ما مخفی میکنه. اون حقیقت اینه که این نرون‌ها واقعی نیستند و در واقع شبکه عصبی هیچ چیزی نیست جز یه تابع پیچیده و به شدت غیر خطی که ما سعی میکنم پارامتر‌هاش رو با استفاده از رفتاری که از تابع توقع داریم انجام بده (دیتا) تخمین می‌زنیم. یک شبکه‌ی feedforward ساده رو در نظر بگیرید. اگر این شبکه سه لایه باشه در واقع این شبکه چیزی نیست جز رگرسیون غیر خطی با هایپرتز y=g(W’f(WX+b)+b’) که W وزنهای لایه اول، Wپریم وزن‌های لایه دوم، تابع f تابع فعالسازی لایه پنهان و g تابع فعال‌سازی تابع خروجیه. هدف ما از آموزش این شبکه عصبی صرفا یادگیری پارامترهای این تابعه و تمام feedforwardها و back propagateها برای همینه.

اما چیزی که بالا گفتم یه جنبه از شبکه‌های عصبی بود. این شبکه‌ها رو جور دیگه‌ای هم میشه نگاه کرد. نگاه دوم که نگاه مورد علاقه منه نگاه آماریه. وقتی که این تابع پارامتر‌های خودش رو یاد میگیره، در واقع داره یاد میگیره که وزن‌های این شبکه عصبی رو چطوری تنظیم کنه که بتونی با ورودی، خروجی رو بسازه. وقتی که پارامتر‌های تعیین شدند، برای هر ورودی یک یا چند نمایش (representaion)‌ به دست می‌آره که نشون دهنده اطلاعات آماری پنهان توی اون ورودی‌اند! برای مثال سه شبکه سه لایه‌‌ای که پاراگراف قبل توضیح دادم، وقتی شبکه آموزش داده شد، شبکه به ازای هر ورودی یه بردار f میسازه که خروجی نرون‌های لایه دومه. این بردار بعد از اینکه تو ماتریس Wپریم ضرب شه خروجی رو میسازه، پس این بردار نمایشی از ورودیه و بسته به اینکه ورودی و خروجی این شبکه عصبی چی هستند این نمایش میتونه ویژگی‌های منحصر به فردی داشته باشه. مثلا اگه ورودی پیکسل‌های خام عکس باشه و خروجی این باشه که این عکس هات داگه یا نه (سریال سیلیکون ولی رو دیدید؟)، این بردار f یا همون خروجی نرون‌های لایه پنهان ویژگی‌های استخراج شده‌ای از عکس هستند که طبق آمار موجود در دیتای آموزش، میتونن به تشخیص هات داگ بودن یا نبودن عکس کمک کنند. ویژگی‌های مثل رنگ و فرم و چیزهای دیگه 🙂 . البته که میدونیم یه شبکه عصبی سه لایه اونقدری قدرت یادگیری نداره که بتونه همچین مسئله سنگینی رو یاد بگیره و برای حل این مسئله نیاز به شبکه‌هایی با لایه‌های بیشتر داریم و بعضا معماری متفاوت داریم. یک شبکه با لایه‌های بیشتر در واقع چیزی نیست جز یه تابع که بیشتر غیرخطیه و میتونه انعطاف‌پذیری بیشتر از خودش تو فضای با ابعاد خیلی زیاد نشون بده.

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

 

یک نظر

فیلم Wild

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

فیلمهایی که دیدم The Shape Of Water و Wild بودن. هرچند که اولی رو خیلی دوست داشتم اما در موردش حرفی نمی‌زنم. این فیلم اسکار گرفته و احتمالا ازش به اندازه کافی حرف زده میشه. اما دلم میخواد دومی رو کمی معرفی کنم.

فیلم Wild داستان زندگی زنی به نام شریله که بعد از خیانت به همسرش و در نتیجه طلاق، از زندگی مهملی که داشته خسته می‌شه و برای رسیدن به یک معنی مهمتر و برای خودشناسی، تصمیم می‌گیره که مسیر pacific crest trail رو پیاده طی کنه. این یک مسیر چهارهزار و دویست کیلومتری تو غرب آمریکاست که از مرز کانادا تا مرز مکزیک کشیده شده و کسایی که دنبال طبیعت گردی طولانی هستند این مسیر رو تو چند ماه طی می‌کنند. فیلم نمایشی از طی کردن این مسیر توسط شریل به همراه فلش ‌بک‌هایی از زندگی گذشته‌اش که باعث شده در نهایت سر از اینجا در بیاره است. این فیلم سال ۲۰۱۴ ساخته شده و همون موقع نامزد دوتا جایزه اسکار شده که خب هیچ‌کدومش رو نمی‌بره. خلاصه اینکه دیدن این فیلم رو توصیه می‌کنم و اگر به سفر و طبیعت‌گردی و کمپینگ علاقمند باشید می‌تونید با دیدن این فیلم لذت دوچندان ببرید.

کتابی که شروع کردم و دارم میخونم زندگی‌نامه ایلان ماسکه که Ashlee Vance سال ۲۰۱۵ منتشر کرده. من این کتاب رو از ایران نخریدم و خبر ندارم که ترجمه فارسیش هست یا نه. اما بعد از خوندنش سعی می‌کنم نظرم رو به همراه خلاصه‌ای ازش بنویسم.

 

۲ نظر

نحوه دریافت مجوز خروج از کشور برای دانشجویان

پارسال زمستون وقتی که می‌خواستم برای اولین بار مجوز خروج از کشور بگیرم، تقریبا هیچ جایی و هیچ کسی نبود که بتونه برام پروسه‌ای که برای دریافت مجوز باید طی کنم رو توضیح بده. حتی آموزش دانشگاه و پلیس +۱۰ هم خیلی دقیق از کل روند خبر نداشتند. یکی می‌گفت باید بری میدون سپاه، یکی می‌گفت باید از فلان جا کاغذ بگیری بدی به بهمان جا. و نکته جالب اینکه همشون اشتباه می‌کردند. برای همین امشب تصمیم گرفتم این روند رو کامل و از اول تا آخر توضیح بدم تا شما مثل من اذیت نشید.

ماجرا اینه که پسر هستید و مثل من سربازی نرفته باشید و دانشجو باشید، برای هر بار خروج از کشور باید مجوز خروج بگیرید. این مجوز رو سازمان نظام وظیفه با همکاری دانشگاه محل تحصیل صادر می‌کنه و برای گرفتنش باید ۱۵میلیون تومن پول نقد وثیقه بذارید. خبر خوب اینکه تمام پروسه اینترنتی انجام میشه و شما حتی لازم نیست از پشت لپتاپ بلند شید.

ادامه این نوشته

۸۰ نظر

ریکامندر سیستم‌ها چطوری کار می‌کنند؟ (قسمت دوم)

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

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

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

ادامه این نوشته

نظر بدید

ریکامندرسیستم‌ها چطوری کار میکنند؟ (قسمت اول)

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

ریکامندرسیستم

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

ریکامندر سیستم‌ها یا سیستم‌های توصیه‌گر، تکنولوژی‌های به سرعت رو به توسعه‌ای هستند که به کاربرها و مشتری‌ها کمک می‌کنند تا محصولاتی که براشون جالبه یا بهش نیاز دارند رو به راحتی پیدا کنند. این سیستم‌ها در فروشگاه‌های اینترنتی کاربرد زیادی دارند، چون این فروشگاه‌ها حق انتخاب زیادی به کاربر میدن و انتخاب رو براش سخت می‌کنند. در حقیقت این سیستم‌ها هم برای کاربر و هم برای فروشنده ارزش افزوده دارند؛ به کاربر کمک می‌کنند تا محصول مورد نیازش رو پیدا کنه و به فروشنده کمک می‌کنند تا تبلیغات بهتری داشته باشد و به طور هدفمندتر محصولش رو به مشتری‌ها توصیه کنه. معمولا یک سیستم‌ توصیه‌گر محصولات را به وسیله تخمین امتیاز یا ساخت لیست مرتب شده از محصولات برای هر کاربر توصیه می کند.

ادامه این نوشته

۵ نظر
android application Google I/O HomeBrew ImageMagick Material Design mobile PogressBar RecyclerView splash TEDxKish ux آموزش اندروید الوین تافلر اندروید اپلیکیشن برنامه نویسی برنامه نویسی اندروید برنامه‌نویسی برنامه‌نویسی اندروید تداکس کیش تعمیر تغییر سایز عکس با ترمینال خلاصه کتاب دانش داده دانشگاه دانشگاه ایده‌آل دزد دیتا ساینس رشته مهندسی کامپیوتر ریکامندرسیستم سیستم‌های توصیه‌گر فری‌لنس لپتاپ متریال دیزاین معرفی کتاب موج سوم نوار پیشرفت همایش هوش مصنوعی ُجزیره کیش کار کسب و کار یادگیری عمیق یادگیری ماشین