فرض کنید مجموعه از نقاط به شکل بالا داریم که داده های ما هستند. این داده ها دارای یک متغیر مستقل یعنی x و یک متغیر وابسته یعنی y هستند. این داده ها از چه مدلی یا توزیعی پیروی میکنند؟ می توان سه حالت در نظر گرفت. حالت اول یک فرضیه بسیار ساده است. یعنی فرض کنیم که داده ها از یک رابطه خطی بین متغیر اول و دوم آمده باشند(شکل اول سمت چپ). و عدم تبعیت هم صرفا یک نویز است. اما مشاهده میکنید که خطای این مدل خیلی بالاست. حالت دوم یک مدل بسیار پیچیده است. در این حالت خطا صفر است! اما این مدل آنقدر پیچیده شده که با دیدن داده های جدید نمی تواند آن را توضیح دهد و نیاز دارد که باز هم داستان جدید برای آن درست کند. در نهایت شکل سوم از سمت چپ یک مصالحه بین پیچیدگی و دقت انجام داده است.
پیچیدگی در این حالت می تواند به طول کوتاه ترین برنامه تعبیر شود که یک چند جمله ای را تولید میکند. طول این برنامه متناظر با درجه چند جمله ای است. حالت اول خطی است پس یک پارامتر دارد. حالت دوم درجه بالایی دارد(مثلا ۲۰) و سومی میانه است(درجه چهارم).
در هر کدام از حالت ها فرضیه به ما کمک میکند تا داده ها را فشرده تر توضیح دهیم. اگر شما یک پارامتر داشته باشید می توانید قدری داده ها را فشرده تر توضیح دهید اما با بیست پارامتر توضیح داده ها بسیار فشرده تر می شود اما مشکل، بزرگ شدن خود مدل است. پس ما دو اندازه داریم که میخواهیم همزمان کوچک کنیم:
۱- طول داده ها به کمک فرضیه (L(D|H
۲- طول فرضیه L(H)
که در اینجا L تابعی است که طول داده یا فرضیه را به بیت محاسبه می کند D داده و H فرضیه است. فرضیه ای که مطابقت خوبی با داده ها داشته باشد به ما کمک می کند که داده ها را بیشتر فشرده کنیم. مثلا فرضیه ای که می گوید حروف زبان همه با یک احتمال ظاهر می شود یک فرضیه فوق العاده ساده(L(H) کوتاه) ولی بدون قدرت فشرده سازی است(L(D|H) بسیار بلند) اما فرضیه اینکه حروف زبان دارای توزیع مشخصی هستند که در ان "آ" دارای بیشترین احتمال و "ژ" دارای کمترین احتمال است، به ما کمک کرد که داده ها را فشرده تر کنیم. و درنهایت مدلی که در ذهن یک انسان از زبان وجود دارد دارای بیشترین قدرت فشرده سازی است!
در مثال بالا برای خط، L(H1) کوتاه است (یک فرضیه ساده با یک پارامتر) ولی L(D|H1) بلند است! چون فقط با این فرضیه نمی توان خیلی در مورد داده توضیح داده و آن را فشرده کرد.
برای دومین فرضیه L(H3) بسیار طولانی است(یک فرضیه پیچیده با تعداد زیادی پارامتر) اما L(D|H3) کوتاه است. این فرضیه کاملا بر داده های مشاهداتی منطبق است. اما دقت کنید این باعث می شود مدل نتواند داده های جدید را خوب توضیح دهد! انگار مدل فقط داده های موجود را به خاطر سپرده است.
و برای سومین حالت L(H2) و L(D|H2) هر دو متوسط هستند
پیچیدگی در این حالت می تواند به طول کوتاه ترین برنامه تعبیر شود که یک چند جمله ای را تولید میکند. طول این برنامه متناظر با درجه چند جمله ای است. حالت اول خطی است پس یک پارامتر دارد. حالت دوم درجه بالایی دارد(مثلا ۲۰) و سومی میانه است(درجه چهارم).
در هر کدام از حالت ها فرضیه به ما کمک میکند تا داده ها را فشرده تر توضیح دهیم. اگر شما یک پارامتر داشته باشید می توانید قدری داده ها را فشرده تر توضیح دهید اما با بیست پارامتر توضیح داده ها بسیار فشرده تر می شود اما مشکل، بزرگ شدن خود مدل است. پس ما دو اندازه داریم که میخواهیم همزمان کوچک کنیم:
۱- طول داده ها به کمک فرضیه (L(D|H
۲- طول فرضیه L(H)
که در اینجا L تابعی است که طول داده یا فرضیه را به بیت محاسبه می کند D داده و H فرضیه است. فرضیه ای که مطابقت خوبی با داده ها داشته باشد به ما کمک می کند که داده ها را بیشتر فشرده کنیم. مثلا فرضیه ای که می گوید حروف زبان همه با یک احتمال ظاهر می شود یک فرضیه فوق العاده ساده(L(H) کوتاه) ولی بدون قدرت فشرده سازی است(L(D|H) بسیار بلند) اما فرضیه اینکه حروف زبان دارای توزیع مشخصی هستند که در ان "آ" دارای بیشترین احتمال و "ژ" دارای کمترین احتمال است، به ما کمک کرد که داده ها را فشرده تر کنیم. و درنهایت مدلی که در ذهن یک انسان از زبان وجود دارد دارای بیشترین قدرت فشرده سازی است!
در مثال بالا برای خط، L(H1) کوتاه است (یک فرضیه ساده با یک پارامتر) ولی L(D|H1) بلند است! چون فقط با این فرضیه نمی توان خیلی در مورد داده توضیح داده و آن را فشرده کرد.
برای دومین فرضیه L(H3) بسیار طولانی است(یک فرضیه پیچیده با تعداد زیادی پارامتر) اما L(D|H3) کوتاه است. این فرضیه کاملا بر داده های مشاهداتی منطبق است. اما دقت کنید این باعث می شود مدل نتواند داده های جدید را خوب توضیح دهد! انگار مدل فقط داده های موجود را به خاطر سپرده است.
و برای سومین حالت L(H2) و L(D|H2) هر دو متوسط هستند
اینجا می توانیم توقف کنیم تا به چند اصل فلسفی در نحوه یافتن فرضیه ها بپردازیم. یاد گرفتیم که نظم در داده ها می تواند برای فشرده سازی آن استفاده شود و همچنین یادگیری چیزی جز یافتن این الگوها یا نظم ها نیست. باید توجه کنیم که روش های یادگیری باید یک تفسیر دقیق داشته باشند جدای از این موضوع که آیا مدل ها "درست" هستند یا خیر! بر اساس J.Rissanen که یکی از ایده پردازان اصلی MDL است:
ما هرگز نمیخواهیم این دچار این پیش فرض غلط شویم که داده های مشاهداتی واقعا توسط یک توزیع مثلا گاوسی تولید می شوند و سپس جلوتر برویم و بر اساس این فرض چیزهای دیگری را نتیجه گیری کنیم. این نتیجه گیری ها ممکن است جالب باشند ولی به موضوعی که داریم یعنی یاد گرفتن ویژگی های مفید از داده بی ربط هستند.
فلسفه ریزانن را می توان بیشتر باز کرد:
1- نظم به عنوان فشرده سازی: بر اساس ریزانن هدف استدلال استقرایی(یادگیری) بیرون کشیدن نظم موجود در داده ها است. تا بتوان تا جای ممکن الگو(اطلاعات معنی دار) را از نویز(اطلاعات تصادفی) بیرون کشید.
2- مدل ها به عنوان زبان ها: ریزانن مدل ها را زبان های مفیدی توصیف می کند که ویژگی های مفید داده ها را توضیح می دهند. مدل های مختلف چون زبان های مختلف جنبه های مختلفی از یک مجموعه ی واحد از داده ها را بر ملا می کنند. در این جا اصلا به این موضوع کار نداریم که مدل واقعی یا حقیقی در پس پشت داده ها کدام است. چنین چیزی به هیچ عنوان موضوعیت ندارد. در تصویر سنتی فرض میکردند داده ها از یک فرضیه می آیند که آن فرضیه "حقیقت" پدیده است. و اگر خطاهایی در مشاهده وجود دارد آن ها هم نویز هستند. اما در این دیدگاه نویز نسبت به مدل تعریف می شود! به عبارت فنی تر نویز میزان اطلاعات اضافی در واحد بیت است که برای کد کردن داده به شرط مدل باید اضافه کنیم. بنابراین نویز، یک متغیر تصادفی نیست: بلکه یک تابع از مدل انتخابی و داده های مشاهده شده است. به این ترتیب جایی برای "توزیع واقعی" یا "حالت واقعی طبیعت" (true state of nature) وجود ندارد تنها مدل ها و داده ها وجود دارند. بنابراین اگر در یک آزمایش این گزاره بیان شود که: "این داده های تجربی بسیار نویزی هستند" بنابر دیدگاه سنتی به معنی آن است که داده از یک توزیع با واریانس بالا می ایند اما در دیدگاه جدید تنها به این معناست که داده ها با مدل های موجود قابل فشرده سازی نیست اما نمی توان این امکان که یک مدل بتواند آن را فشرده سازی کرده و توضیح دهد را رد کرد.
3- ما فقط داده داریم: بسیاری از روش های سنتی در یادگیری به "حالت واقعی طبیعت" قایل هستند. یعنی قوانینی که داده های تجربی را توضیح میدهند. بر اساس دیدگاه ریزانن این روش ها از اساس به خطا می روند. دلیل اصلی این موضوع آن است که روش ها بر اساس این فرض طراحی می شوند که حالت واقعی طبیعت در مدلی است که ما در پی یافتن پارامتر های آن هستیم. مثلا ما یک مدل گاوسی داریم و دنبال یافتن میانگین و واریانس آن هستیم! که این پیش فرض بسیار نامحتمل است چون فضای مدل ها بی نهایت است!! اما MDL فقط داده ها را درنظر می گیرد.
پس باید چه کرد؟ درست است که ما شاید هرگز نتوانیم مدل های واقعی طبیعت را بیابیم یا اصلا چنین چیزی حتی از لحاظ فلسفی معنا نداشته باشد اما ما می توانیم مدل هایی بسازیم که مفید باشند.مثلا مدل Naive bayes برای فیلتر کردن اسپم ها یا مدل Hidden markov model برای تشخیص گفتار. این مدل ها قطعا بسیار ساده تر از آن هستند که حتی به واقعیت داده ها هم نزدیک باشند اما چرا از آن هت استفاده میکنیم. چون آنها زمانی مفید بودند. بعد از آن ها هم مدل های پیشرفته تری آمدند که مفید تر بودند. این مدل ها هم اشتباه هستند اما مفیدتر هستند. جرج باکس در این باره می گوید: تمام مدل ها غلط هستند اما برخی مفید هستند. این واقعیت همچنین توضیح می دهد که چرا در هوش مصنوعی افراد از روش های بسیار متنوعی استفاده می کنند که در فضاهای نظری بسیاری متفاوتی زندگی میکنند. دلیل این موضوع تنها این است که مفید بودن مدل ها مهم هستند. کسی به این فکر نمیکند آیا شبکه عصبی که شبیه تر به ساختار عصبی مغز انسان است به واقعیت نزدیک تر است یا یادگیری با استفاده از kernel ها.
این دیدگاه به دیدگاه های مایکل دامت در فلسفه علم بسیار نزدیک است. دامت به ضد واقع گرایی باور داشت. در این دیدگاه نظریات علمی آینه طبیعت نیستند: چیزی به اسم قوانین درست طبیعت وجود ندارد. نظریه های علمی همچون مدل هایی هستند که با استفاده از مجموعه ای از مفاهیم و موجودیت های ساختگی سعی در توضیح داده های مشاهداتی دارند.
ما هرگز نمیخواهیم این دچار این پیش فرض غلط شویم که داده های مشاهداتی واقعا توسط یک توزیع مثلا گاوسی تولید می شوند و سپس جلوتر برویم و بر اساس این فرض چیزهای دیگری را نتیجه گیری کنیم. این نتیجه گیری ها ممکن است جالب باشند ولی به موضوعی که داریم یعنی یاد گرفتن ویژگی های مفید از داده بی ربط هستند.
فلسفه ریزانن را می توان بیشتر باز کرد:
1- نظم به عنوان فشرده سازی: بر اساس ریزانن هدف استدلال استقرایی(یادگیری) بیرون کشیدن نظم موجود در داده ها است. تا بتوان تا جای ممکن الگو(اطلاعات معنی دار) را از نویز(اطلاعات تصادفی) بیرون کشید.
2- مدل ها به عنوان زبان ها: ریزانن مدل ها را زبان های مفیدی توصیف می کند که ویژگی های مفید داده ها را توضیح می دهند. مدل های مختلف چون زبان های مختلف جنبه های مختلفی از یک مجموعه ی واحد از داده ها را بر ملا می کنند. در این جا اصلا به این موضوع کار نداریم که مدل واقعی یا حقیقی در پس پشت داده ها کدام است. چنین چیزی به هیچ عنوان موضوعیت ندارد. در تصویر سنتی فرض میکردند داده ها از یک فرضیه می آیند که آن فرضیه "حقیقت" پدیده است. و اگر خطاهایی در مشاهده وجود دارد آن ها هم نویز هستند. اما در این دیدگاه نویز نسبت به مدل تعریف می شود! به عبارت فنی تر نویز میزان اطلاعات اضافی در واحد بیت است که برای کد کردن داده به شرط مدل باید اضافه کنیم. بنابراین نویز، یک متغیر تصادفی نیست: بلکه یک تابع از مدل انتخابی و داده های مشاهده شده است. به این ترتیب جایی برای "توزیع واقعی" یا "حالت واقعی طبیعت" (true state of nature) وجود ندارد تنها مدل ها و داده ها وجود دارند. بنابراین اگر در یک آزمایش این گزاره بیان شود که: "این داده های تجربی بسیار نویزی هستند" بنابر دیدگاه سنتی به معنی آن است که داده از یک توزیع با واریانس بالا می ایند اما در دیدگاه جدید تنها به این معناست که داده ها با مدل های موجود قابل فشرده سازی نیست اما نمی توان این امکان که یک مدل بتواند آن را فشرده سازی کرده و توضیح دهد را رد کرد.
3- ما فقط داده داریم: بسیاری از روش های سنتی در یادگیری به "حالت واقعی طبیعت" قایل هستند. یعنی قوانینی که داده های تجربی را توضیح میدهند. بر اساس دیدگاه ریزانن این روش ها از اساس به خطا می روند. دلیل اصلی این موضوع آن است که روش ها بر اساس این فرض طراحی می شوند که حالت واقعی طبیعت در مدلی است که ما در پی یافتن پارامتر های آن هستیم. مثلا ما یک مدل گاوسی داریم و دنبال یافتن میانگین و واریانس آن هستیم! که این پیش فرض بسیار نامحتمل است چون فضای مدل ها بی نهایت است!! اما MDL فقط داده ها را درنظر می گیرد.
پس باید چه کرد؟ درست است که ما شاید هرگز نتوانیم مدل های واقعی طبیعت را بیابیم یا اصلا چنین چیزی حتی از لحاظ فلسفی معنا نداشته باشد اما ما می توانیم مدل هایی بسازیم که مفید باشند.مثلا مدل Naive bayes برای فیلتر کردن اسپم ها یا مدل Hidden markov model برای تشخیص گفتار. این مدل ها قطعا بسیار ساده تر از آن هستند که حتی به واقعیت داده ها هم نزدیک باشند اما چرا از آن هت استفاده میکنیم. چون آنها زمانی مفید بودند. بعد از آن ها هم مدل های پیشرفته تری آمدند که مفید تر بودند. این مدل ها هم اشتباه هستند اما مفیدتر هستند. جرج باکس در این باره می گوید: تمام مدل ها غلط هستند اما برخی مفید هستند. این واقعیت همچنین توضیح می دهد که چرا در هوش مصنوعی افراد از روش های بسیار متنوعی استفاده می کنند که در فضاهای نظری بسیاری متفاوتی زندگی میکنند. دلیل این موضوع تنها این است که مفید بودن مدل ها مهم هستند. کسی به این فکر نمیکند آیا شبکه عصبی که شبیه تر به ساختار عصبی مغز انسان است به واقعیت نزدیک تر است یا یادگیری با استفاده از kernel ها.
این دیدگاه به دیدگاه های مایکل دامت در فلسفه علم بسیار نزدیک است. دامت به ضد واقع گرایی باور داشت. در این دیدگاه نظریات علمی آینه طبیعت نیستند: چیزی به اسم قوانین درست طبیعت وجود ندارد. نظریه های علمی همچون مدل هایی هستند که با استفاده از مجموعه ای از مفاهیم و موجودیت های ساختگی سعی در توضیح داده های مشاهداتی دارند.
🔵آیا مساله خوشه بندی یک مساله خوش تعریف است؟🔵
وقتی برای اولین بار در یکی از بانک های ایران مجموعه ای داده به من دادند و ازم خواستند که مشتری ها را خوشه بندی(clustering) کنم هیجان زده بودم چون که برای اولین بار می توانستم یادگیری ماشین را در عمل استفاده کنم. اما به سرعت متوجه مشکلات زیادی شدم. اول آنکه برخلاف داده هایی که شما معمولا در پروژه های دانشگاهی یا پژوهشی از آن استفاده می کنید داده های واقعی تمیز و شیک نیستند. بسیاری از مقادیر وجود ندارد(مثلا سن یا محل تولد بعضی افراد را نداریم) علاوه بر آن باید با داده ها با احتیاط برخورد کرد چون ممکن است غلط هم باشند. حجم داده ها به طرز وحشتناکی بزرگ هستند و گاهی هم از کمبود داده رنج می بردیم. اما علاوه بر آن مشکلات تکنیکی هم وجود داشتند. اولین سوال این بود که چند خوشه؟ چند گروه از مشتریان قابل تفکیک هستند؟ سریعا به ذهنم رسید که الگوریتم های خوشه بندی ای وجود دارند که خودشان تعداد خوشه ها را تشخیص می دهند. اما دستکاری کردن داده ها مثلا اسکیل کردن آنها (تقسیم داده ها بر بزرگترین مقدار برای قرار دادنشان در بازه صفر و یک. کاری که در یادگیری ماشین برای مثلا استخراج جهت های داده بسیار معمول است) باعث می شد تعداد خوشه ها تغییر کند! الگوریتم های مختلف خوشه بندی نتایج متفاوت و بعضا متضادی به من می دادند. کاملا کلافه و سر درگم شده بودم. چه اتفاقی دارد می افتد؟ احساس می کردم هر آنچه در دانشگاه یاد گرفته ام به من کمکی نکرده است و مستاصل مانده ام با داده هایی که هیچ کس دیگری قبل از من آنها را ندیده است بنابراین جستجو در اینترنت هم به من کمکی نمیکرد. بالاخره روزی از خودم پرسیدم که اصلا آیا خوشه بندی یک مساله خوش تعریف است؟ خوش تعریف از لحاظ ریاضی به این معناست که بتوان جوابهایی قطعی و نهایی با استفاده از مجموعه ای ورودی و پیش فرض های مشخص تعریف کرد. در چنین مواقعی ممکن است با خود بگویید: ولش کن! خودت را بیشتر خسته نکن سعی کن یک روش را که حدودی کار می کند ارایه بدهی حقوقت را بگیری و حتی براحتی ترفیع بگیری. اما از طرفی دوست داری بدانی واقعا مشکل قضیه کجاست. اینجاست که باید انتخاب کنی قرص آبی را انتخاب کنی بر گردی سر کارت و بقیه کدهایت را بنویسی یا قرص قرمز را انتخاب کنی و بدانی داستان پشت صحنه چیست. این جا جایی بود که من قرص قرمز را انتخاب کردم تا وارد دنیای عجیبی شوم که فلسفه ی پنهان پیش فرض های ریاضی روش های هوش مصنوعی بود! ورود به سرزمین عجایب!
وقتی برای اولین بار در یکی از بانک های ایران مجموعه ای داده به من دادند و ازم خواستند که مشتری ها را خوشه بندی(clustering) کنم هیجان زده بودم چون که برای اولین بار می توانستم یادگیری ماشین را در عمل استفاده کنم. اما به سرعت متوجه مشکلات زیادی شدم. اول آنکه برخلاف داده هایی که شما معمولا در پروژه های دانشگاهی یا پژوهشی از آن استفاده می کنید داده های واقعی تمیز و شیک نیستند. بسیاری از مقادیر وجود ندارد(مثلا سن یا محل تولد بعضی افراد را نداریم) علاوه بر آن باید با داده ها با احتیاط برخورد کرد چون ممکن است غلط هم باشند. حجم داده ها به طرز وحشتناکی بزرگ هستند و گاهی هم از کمبود داده رنج می بردیم. اما علاوه بر آن مشکلات تکنیکی هم وجود داشتند. اولین سوال این بود که چند خوشه؟ چند گروه از مشتریان قابل تفکیک هستند؟ سریعا به ذهنم رسید که الگوریتم های خوشه بندی ای وجود دارند که خودشان تعداد خوشه ها را تشخیص می دهند. اما دستکاری کردن داده ها مثلا اسکیل کردن آنها (تقسیم داده ها بر بزرگترین مقدار برای قرار دادنشان در بازه صفر و یک. کاری که در یادگیری ماشین برای مثلا استخراج جهت های داده بسیار معمول است) باعث می شد تعداد خوشه ها تغییر کند! الگوریتم های مختلف خوشه بندی نتایج متفاوت و بعضا متضادی به من می دادند. کاملا کلافه و سر درگم شده بودم. چه اتفاقی دارد می افتد؟ احساس می کردم هر آنچه در دانشگاه یاد گرفته ام به من کمکی نکرده است و مستاصل مانده ام با داده هایی که هیچ کس دیگری قبل از من آنها را ندیده است بنابراین جستجو در اینترنت هم به من کمکی نمیکرد. بالاخره روزی از خودم پرسیدم که اصلا آیا خوشه بندی یک مساله خوش تعریف است؟ خوش تعریف از لحاظ ریاضی به این معناست که بتوان جوابهایی قطعی و نهایی با استفاده از مجموعه ای ورودی و پیش فرض های مشخص تعریف کرد. در چنین مواقعی ممکن است با خود بگویید: ولش کن! خودت را بیشتر خسته نکن سعی کن یک روش را که حدودی کار می کند ارایه بدهی حقوقت را بگیری و حتی براحتی ترفیع بگیری. اما از طرفی دوست داری بدانی واقعا مشکل قضیه کجاست. اینجاست که باید انتخاب کنی قرص آبی را انتخاب کنی بر گردی سر کارت و بقیه کدهایت را بنویسی یا قرص قرمز را انتخاب کنی و بدانی داستان پشت صحنه چیست. این جا جایی بود که من قرص قرمز را انتخاب کردم تا وارد دنیای عجیبی شوم که فلسفه ی پنهان پیش فرض های ریاضی روش های هوش مصنوعی بود! ورود به سرزمین عجایب!
Forwarded from Tensorflow(@CVision) (Alireza Akhavan)
نوشته یک مجله مربوط به اسب سواری در سال ۱۸۹۵:
"مسخره است که فکر کنیم ماشین ها باعث می شوند اسب ها دیگر استفاده نشوند. "
بحث معاصر ما این است که ماشین های خودران جایگزین راننده ها نخواهند شد ...
🙏Thanks to: @techinsider_channel
"مسخره است که فکر کنیم ماشین ها باعث می شوند اسب ها دیگر استفاده نشوند. "
بحث معاصر ما این است که ماشین های خودران جایگزین راننده ها نخواهند شد ...
🙏Thanks to: @techinsider_channel
Forwarded from نوروسافاری مجله مغز و شناخت
✳️ دزدی ملایم چیست؟
در دوران دانشجویی، پنیرتان را از یخچال مشترک خوابگاه کش رفته اند؟ راستش را بگویید آن سال ها با دیدن شیشه مربای هویج متعلق به یکی از دانشجویان، بی آن که به او بگویید، کمی از آن را نخورده اید؟! نه شما "دزد" بودید و نه آن دانشجو یا دانشجویانی که پنیرتان را یواشکی برداشته بودند. اگر به جای پنیر یا مربا، داخل یخچال "پول" دیده بودید، آن را بر نمی داشتید و آن دانشجویان هم همین طور.
این، موضوعِ آزمایش دکتر دن آریلی است که در زمینه اقتصاد رفتاری پژوهش می کند. او در تعدادی از یخچال های خوابگاه دانشجویی دانشگاه MIT آمریکا 6 بسته کوکاکولا قرار داد. همه نوشابه ها ظرف 72 ساعت توسط دانشجویان برداشته شدند. آریلی در ادامه به جای نوشابه، پول در یخچال ها گذاشت. همان دانشجویانی که نوشابه ها را برداشته و خورده بودند، به پول ها دست نزدند و سرانجام خود دکتر آریلی، پول ها را جمع کرد.
او آزمایش های بیشتری انجام داد. مثلاً در یک آزمایش به دانشجویان تعدادی سوال دادند؛ به آنها گفته شد به ازای هر پاسخ صحیح، مبلغی پول نقد می گیرند. به گروه دیگر گفته شد در قبال هر پاسخ صحیح، ژتونی می گیرند و می توانند آن ژتون را در همان اتاق، به پول نقد تبدیل کنند. نکته این بود که هر دانشجو، خودش تعداد پاسخ های صحیح اش را می شمرد و به ممتحن اعلام می کرد و بر اساس خوداظهاری، «پول» یا «ژتون قابل تبدیل به پول» می گرفت.*
فکر می کنید دانشجویان کدام گروه بیشتر مرتکب تقلب شدند؟ دانشجویانی که قرار بود پول بگیرند، کمتر تقلب کردند ولی گروه دیگر با ناراستی، نمرات خود را بیش از واقعیت اعلام کردند.
علت این است: انسان ها نسبت به "پول" حساسیت بیشتری دارند و اگر درستکار باشند، هرگز به "پول" دیگران تعدی نمی کنند اما این حساسیت در قبال اشیاء دیگری که آنها نیز ارزش پولی دارند، کمتر می شود؛ شاید اسم این پدیده را بتوان "دزدی ملایم" گذاشت. آزمایش دانشجویان و پول و ژتون را مرور کنید: وقتی قرار بود "پول" بگیرند، کمتر تقلب می کردند ولی وقتی قرار بود "ژتون" بگیرند بیشتر تقلب کردند و حال آن که می دانستند می توانند آن ژتون ها را در همان اتاق تحویل دهند و در مقابلش پول بگیرند.
پیشنهاد فردی:
به عنوان یک انسان درستکار، حواس تان به این باشد که ممکن است در قبال اموال غیر پولی دیگران، حساسیت کمتری داشته باشید و ناخودآگاه به حقوق آنها تعدی کنید.
مثلاً وقتی حواس رئیس تان نیست، ممکن نیست یواشکی از جیب اش 10 هزار تومان بردارید (اصلاً در شأن شما نیست و حتی فکر کردن به آن هم توهین آمیز است) اما بارها و بارها از تلفن اداره برای کار شخصی تان استفاده کرده اید در حالی که تلفن همراه تان روی میزتان قرار داشت. در واقع با این کار، از جیب مدیرتان حتی بیش از 10 هزار تومان نیز برای تلفن های شخصی تان برداشت کرده اید اما غیر مستقیم.
شما ممکن نیست از حسابداری شرکت تان 5 هزار تومان پول بردارید، ولی به راحتی یک دسته کاغذ را به خانه می برید.
مثال های دیگر: کارگری که پولی را مستقیم نمی دزدد ولی کم کاری می کند، مسافری که از پتوی مسافرتی که داخل پرواز به او داده اند خوشش آمده و آن را درون کیفش می گذارد، یک مشتری که کتی را می خرد و از آن خوشش نمی آید و آن را بدون کندن اتیکت به فروشنده بر می گرداند ولی نمی گوید که وقتی کت دستش بوده، گوشه ای از آن به لبه میز گرفته و نخ کش شده است، ناشری که کتاب دیگری را بدون اجازه اش چاپ می کند و ... دهها مثال دیگر.
یادمان باشد که هر آنچه ارزش مالی دارد، درست مانند خود پول است و همان طور که در قبال پول و دزدی آن، حساس هستیم درباره دیگر چیزهایی که ارزش پولی دارند نیز حساس باشیم.
◽️پیشنهاد سازمانی:
به عنوان صاحب یک کار و کسب، ساز و کارهای سازمانی را طوری بچینید که مراقبت از اموال سازمان نیز همانند مراقبت های پولی به رسمیت شناخته شود. به یاد داشته باشید که بسیاری از انسان های درستکار و شریف، در برابر اموال دیگران به اندازه پول دیگران حساس نیستند. یک آمار نشان می دهد که زیان وارده از محل تقلب در بازگرداندن لباس ها به فروشگاه های لباس فروشی، از کل خرده دزدی ها در آمریکا بیشتر است.
◽️پیشنهاد تربیتی:
به فرزندان خود، حفظ حقوق دیگران را به طور مشخص و با تعیین مصداق ها و گفتن مثال ها یاد دهید؛ به آنها بگویید که هر آنچه مشخصاً متعلق به خودشان نیست، اعم از پول و اشیاء دیگر، قطعاً متعلق به دیگری است و تنها با اجازه مشخص صاحبان آنها می توانند از آنها استفاده کنند.
منبع: کتاب نابخردیهای پیشبینی پذیر؛ نوشته دن آریلی
🆔 @neurosafari1
در دوران دانشجویی، پنیرتان را از یخچال مشترک خوابگاه کش رفته اند؟ راستش را بگویید آن سال ها با دیدن شیشه مربای هویج متعلق به یکی از دانشجویان، بی آن که به او بگویید، کمی از آن را نخورده اید؟! نه شما "دزد" بودید و نه آن دانشجو یا دانشجویانی که پنیرتان را یواشکی برداشته بودند. اگر به جای پنیر یا مربا، داخل یخچال "پول" دیده بودید، آن را بر نمی داشتید و آن دانشجویان هم همین طور.
این، موضوعِ آزمایش دکتر دن آریلی است که در زمینه اقتصاد رفتاری پژوهش می کند. او در تعدادی از یخچال های خوابگاه دانشجویی دانشگاه MIT آمریکا 6 بسته کوکاکولا قرار داد. همه نوشابه ها ظرف 72 ساعت توسط دانشجویان برداشته شدند. آریلی در ادامه به جای نوشابه، پول در یخچال ها گذاشت. همان دانشجویانی که نوشابه ها را برداشته و خورده بودند، به پول ها دست نزدند و سرانجام خود دکتر آریلی، پول ها را جمع کرد.
او آزمایش های بیشتری انجام داد. مثلاً در یک آزمایش به دانشجویان تعدادی سوال دادند؛ به آنها گفته شد به ازای هر پاسخ صحیح، مبلغی پول نقد می گیرند. به گروه دیگر گفته شد در قبال هر پاسخ صحیح، ژتونی می گیرند و می توانند آن ژتون را در همان اتاق، به پول نقد تبدیل کنند. نکته این بود که هر دانشجو، خودش تعداد پاسخ های صحیح اش را می شمرد و به ممتحن اعلام می کرد و بر اساس خوداظهاری، «پول» یا «ژتون قابل تبدیل به پول» می گرفت.*
فکر می کنید دانشجویان کدام گروه بیشتر مرتکب تقلب شدند؟ دانشجویانی که قرار بود پول بگیرند، کمتر تقلب کردند ولی گروه دیگر با ناراستی، نمرات خود را بیش از واقعیت اعلام کردند.
علت این است: انسان ها نسبت به "پول" حساسیت بیشتری دارند و اگر درستکار باشند، هرگز به "پول" دیگران تعدی نمی کنند اما این حساسیت در قبال اشیاء دیگری که آنها نیز ارزش پولی دارند، کمتر می شود؛ شاید اسم این پدیده را بتوان "دزدی ملایم" گذاشت. آزمایش دانشجویان و پول و ژتون را مرور کنید: وقتی قرار بود "پول" بگیرند، کمتر تقلب می کردند ولی وقتی قرار بود "ژتون" بگیرند بیشتر تقلب کردند و حال آن که می دانستند می توانند آن ژتون ها را در همان اتاق تحویل دهند و در مقابلش پول بگیرند.
پیشنهاد فردی:
به عنوان یک انسان درستکار، حواس تان به این باشد که ممکن است در قبال اموال غیر پولی دیگران، حساسیت کمتری داشته باشید و ناخودآگاه به حقوق آنها تعدی کنید.
مثلاً وقتی حواس رئیس تان نیست، ممکن نیست یواشکی از جیب اش 10 هزار تومان بردارید (اصلاً در شأن شما نیست و حتی فکر کردن به آن هم توهین آمیز است) اما بارها و بارها از تلفن اداره برای کار شخصی تان استفاده کرده اید در حالی که تلفن همراه تان روی میزتان قرار داشت. در واقع با این کار، از جیب مدیرتان حتی بیش از 10 هزار تومان نیز برای تلفن های شخصی تان برداشت کرده اید اما غیر مستقیم.
شما ممکن نیست از حسابداری شرکت تان 5 هزار تومان پول بردارید، ولی به راحتی یک دسته کاغذ را به خانه می برید.
مثال های دیگر: کارگری که پولی را مستقیم نمی دزدد ولی کم کاری می کند، مسافری که از پتوی مسافرتی که داخل پرواز به او داده اند خوشش آمده و آن را درون کیفش می گذارد، یک مشتری که کتی را می خرد و از آن خوشش نمی آید و آن را بدون کندن اتیکت به فروشنده بر می گرداند ولی نمی گوید که وقتی کت دستش بوده، گوشه ای از آن به لبه میز گرفته و نخ کش شده است، ناشری که کتاب دیگری را بدون اجازه اش چاپ می کند و ... دهها مثال دیگر.
یادمان باشد که هر آنچه ارزش مالی دارد، درست مانند خود پول است و همان طور که در قبال پول و دزدی آن، حساس هستیم درباره دیگر چیزهایی که ارزش پولی دارند نیز حساس باشیم.
◽️پیشنهاد سازمانی:
به عنوان صاحب یک کار و کسب، ساز و کارهای سازمانی را طوری بچینید که مراقبت از اموال سازمان نیز همانند مراقبت های پولی به رسمیت شناخته شود. به یاد داشته باشید که بسیاری از انسان های درستکار و شریف، در برابر اموال دیگران به اندازه پول دیگران حساس نیستند. یک آمار نشان می دهد که زیان وارده از محل تقلب در بازگرداندن لباس ها به فروشگاه های لباس فروشی، از کل خرده دزدی ها در آمریکا بیشتر است.
◽️پیشنهاد تربیتی:
به فرزندان خود، حفظ حقوق دیگران را به طور مشخص و با تعیین مصداق ها و گفتن مثال ها یاد دهید؛ به آنها بگویید که هر آنچه مشخصاً متعلق به خودشان نیست، اعم از پول و اشیاء دیگر، قطعاً متعلق به دیگری است و تنها با اجازه مشخص صاحبان آنها می توانند از آنها استفاده کنند.
منبع: کتاب نابخردیهای پیشبینی پذیر؛ نوشته دن آریلی
🆔 @neurosafari1
🔵اتومات های سلولی: اتم های پیچیدگی🔵
وقتی با پدیده های پیچیده روبرو می شویم یکی از راهها برای فهم آن را تقسیم به اجزای سازنده می دانیم. مثلا وقتی چیزی مثل بدن انسان را درک نمیکنیم سعی میکنیم به سطح قسمت های سازنده آن مانند معده، روده، قلب و مغز برویم و اگر باز هم توضیحات بیشتر می خواهیم می توانیم باز هم جزیی تر نگاه کنیم تا اینکه به سطح سلولی برسیم. این کار را تقریبا برای هر شاخه ای از شناخت علمی انجام می دهیم. مثلا اگر درک جامعه پیچیده است سعی میکنیم آن را در سطح گروه ها و افراد ببینیم یا اگر به طور کلی جهان پیچیده است آن را تا سطح اتم و الکترون و کوارک فروکاهش دهیم و بعد مطالعه کنیم. البته این یک واکنش نسبتا طبیعی با توجه به موفقیت های علمی در سده های اخیر است. رویه علمی برای قرن ها بر اساس فرض "فروکاست گرایی"(reductionism) قرار گرفته است. در این دیدگاه متافیزیکی، فهم هر چیزی با جراحی کردن و تقسیم آن به اجزای سازنده اش که ساده تر هستند، قابل انجام است. این تز متافیزیکی البته همیشه بدون چالش هم نبوده است. یکی از نمونه های آن تلاش علم برای کاهش به سطح زیر اتمی بود. نتیجه چنین تلاشی برعکس شد: نه تنها اجزا ساده تر نشدند بلکه با سطحی از واقعیت به نام واقعیت کوانتومی آشنا شدیم که درک و فهم متعارفی را به چالش کشید تا جایی که نظریه کوانتوم پیچیده ترین و غیر قابل فهم ترین نظریه علمی تا به امروز شده است.
ادامه در لینک زیر:
https://vrgl.ir/K8E0g
وقتی با پدیده های پیچیده روبرو می شویم یکی از راهها برای فهم آن را تقسیم به اجزای سازنده می دانیم. مثلا وقتی چیزی مثل بدن انسان را درک نمیکنیم سعی میکنیم به سطح قسمت های سازنده آن مانند معده، روده، قلب و مغز برویم و اگر باز هم توضیحات بیشتر می خواهیم می توانیم باز هم جزیی تر نگاه کنیم تا اینکه به سطح سلولی برسیم. این کار را تقریبا برای هر شاخه ای از شناخت علمی انجام می دهیم. مثلا اگر درک جامعه پیچیده است سعی میکنیم آن را در سطح گروه ها و افراد ببینیم یا اگر به طور کلی جهان پیچیده است آن را تا سطح اتم و الکترون و کوارک فروکاهش دهیم و بعد مطالعه کنیم. البته این یک واکنش نسبتا طبیعی با توجه به موفقیت های علمی در سده های اخیر است. رویه علمی برای قرن ها بر اساس فرض "فروکاست گرایی"(reductionism) قرار گرفته است. در این دیدگاه متافیزیکی، فهم هر چیزی با جراحی کردن و تقسیم آن به اجزای سازنده اش که ساده تر هستند، قابل انجام است. این تز متافیزیکی البته همیشه بدون چالش هم نبوده است. یکی از نمونه های آن تلاش علم برای کاهش به سطح زیر اتمی بود. نتیجه چنین تلاشی برعکس شد: نه تنها اجزا ساده تر نشدند بلکه با سطحی از واقعیت به نام واقعیت کوانتومی آشنا شدیم که درک و فهم متعارفی را به چالش کشید تا جایی که نظریه کوانتوم پیچیده ترین و غیر قابل فهم ترین نظریه علمی تا به امروز شده است.
ادامه در لینک زیر:
https://vrgl.ir/K8E0g
ویرگول
اتومات های سلولی: اتم های پیچیدگی
چیدگی در فرم اتومات های سلولی در طبیعت بر روی بدن مارمولک منبع[1] وقتی با پدیده های پیچیده روبرو می شویم یکی از راهها برای فهم آن را تقسیم…
Audio
از گنجینه ابری را بیرون می کشم
نامش را می پرسم
سکوت می کند
پرنده ها در نور پاییز
جان باخته اند
خبر ندارند.
یارم!
از خواب برخیز
سراسر شب را
باید زنده بمانیم
فرسوده و آرام
سراغ عصا را می گیرم
چه روزهایی
که در گندمزار می دویدیم!
احمدرضا احمدی
کتاب: ویرانه های دل را به یاد می سپارم
نامش را می پرسم
سکوت می کند
پرنده ها در نور پاییز
جان باخته اند
خبر ندارند.
یارم!
از خواب برخیز
سراسر شب را
باید زنده بمانیم
فرسوده و آرام
سراغ عصا را می گیرم
چه روزهایی
که در گندمزار می دویدیم!
احمدرضا احمدی
کتاب: ویرانه های دل را به یاد می سپارم
This media is not supported in your browser
VIEW IN TELEGRAM
خلاصه کتاب: هفت عادت انسان های موثر
The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change https://www.amazon.com/dp/0743269519/ref=cm_sw_r_cp_apa_i_-2uuCb46TZZ0Y
The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change https://www.amazon.com/dp/0743269519/ref=cm_sw_r_cp_apa_i_-2uuCb46TZZ0Y
نظریه اطلاعات (قسمت اول)
نظریه اطلاعات در قلب ارتباطات ایجاد شد. زمانی که شما بخواهید پیامی را از یک منبع A به یک مقصد B برسانید همیشه این سوال وجود دارد که بهترین روش برای ارسال اطلاعات چیست. فرض کنید می خواهیم یک سری متون را از A به B برسانیم. اگر بخواهیم هر کاراکتر را به صورت باینری در بیاوریم. در این صورت مثلا برای زبان فارسی نیاز به 5 بیت برای 32 حرف داریم. بنابراین یک کلمه سه حرفی نیاز به 15 بیت برای انتقال دارد. شانون به عنوان یک ریاضیدان و مهندس برق به دنبال راهی برای بهینه تر کردن این ارسال بود. اگرچه چند بیت اضافی شاید خیلی مهم بنظر نرسد اما در آن زمان بیت به بیت برای شبکه های اولیه بسیار پرهزینه بود و از طرفی حتی امروزه هم انتقال بهینه اطلاعات با حجم بسیار زیاد اطلاعات و نیز تعداد بسیار زیاد کاربران بسیار مهم است. هرچند باید دانست کاربردهای نظریه اطلاعات از انتقال اطلاعات بسیار فراتر می رود.
ادامه در لینک زیر
https://goo.gl/WiwwPq
نظریه اطلاعات در قلب ارتباطات ایجاد شد. زمانی که شما بخواهید پیامی را از یک منبع A به یک مقصد B برسانید همیشه این سوال وجود دارد که بهترین روش برای ارسال اطلاعات چیست. فرض کنید می خواهیم یک سری متون را از A به B برسانیم. اگر بخواهیم هر کاراکتر را به صورت باینری در بیاوریم. در این صورت مثلا برای زبان فارسی نیاز به 5 بیت برای 32 حرف داریم. بنابراین یک کلمه سه حرفی نیاز به 15 بیت برای انتقال دارد. شانون به عنوان یک ریاضیدان و مهندس برق به دنبال راهی برای بهینه تر کردن این ارسال بود. اگرچه چند بیت اضافی شاید خیلی مهم بنظر نرسد اما در آن زمان بیت به بیت برای شبکه های اولیه بسیار پرهزینه بود و از طرفی حتی امروزه هم انتقال بهینه اطلاعات با حجم بسیار زیاد اطلاعات و نیز تعداد بسیار زیاد کاربران بسیار مهم است. هرچند باید دانست کاربردهای نظریه اطلاعات از انتقال اطلاعات بسیار فراتر می رود.
ادامه در لینک زیر
https://goo.gl/WiwwPq
ویرگول
مقدمه ای بر نظریه اطلاعات(قسمت اول)
نظریه اطلاعات در قلب ارتباطات ایجاد شد. زمانی که شما بخواهید پیامی را از یک منبع A به یک مقصد B برسانید همیشه این سوال وجود دارد که بهترین…
MatlabTips
نظریه اطلاعات (قسمت اول) نظریه اطلاعات در قلب ارتباطات ایجاد شد. زمانی که شما بخواهید پیامی را از یک منبع A به یک مقصد B برسانید همیشه این سوال وجود دارد که بهترین روش برای ارسال اطلاعات چیست. فرض کنید می خواهیم یک سری متون را از A به B برسانیم. اگر بخواهیم…
برای مدت طولانی دوست داشتم نظریه اطلاعات که در قلب بسیاری از نظریه هایی هست که در مهندسی و علوم استفاده میشه رو به زبان ساده بفهمم و برای بقیه توضیح بدم. بالاخره بعد از چندین هفته مطالعه و تغییر پیش نویس دو قسمت اول اون رو آماده کردم. برخلاف اهمیت زیادی که این نظریه داره در خیلی از دانشکده ها این درس هنوز ارایه نمیشه و در بهترین حالت یک زیرمجموعه از نظریه احتمال قرار میگیره. همچنین منابع فارسی ترجمه شده بسیار خشک و بی روح بدون توجه به کاربردها به این موضوع پرداختند. پس تصمیم گرفتم که تمامی منابع انگلیسی مناسبی که در طول دو سال اخیر رو خوندم جمع آوری بکنم و در یک قالب واحد و منسجم و تا جای ممکن شهودی به فارسی بنویسم و در اختیار شما بگذارم. امیدوارم کسی که می خواد درک شهودی(و نه حفظی و طوطی وار) از نظریه اطلاعات پیدا کنه این مجموعه براش مفید باشه. به عقیده من نظریه اطلاعات آنقدر شهودی هست که شما می توانید برای تقریبا هر شخصی با کمترین پیش زمینه ریاضی بدون حفظ کردن حتی یک فرمول توضیح دهید.
از اونجایی که تلگرام رسانه مناسبی برای قرار دادن فرمول ها نیست تصمیم گرفتم اونها رو روی وب منتشر کنم که هم راحتتر قابل خواندن باشد و هم قابل جستجو و دسترسی برای دایره بزرگتری از مخاطبان باشه.
از اونجایی که تلگرام رسانه مناسبی برای قرار دادن فرمول ها نیست تصمیم گرفتم اونها رو روی وب منتشر کنم که هم راحتتر قابل خواندن باشد و هم قابل جستجو و دسترسی برای دایره بزرگتری از مخاطبان باشه.
در قسمت قبلی مقدمه ای از نظریه اطلاعات را گفتیم و با مفاهیم اطلاعات و آنتروپی آشنا شدیم. در این قسمت سعی میکنیم ادامه این نظریه با احتمالات و تابع درستنمایی(likelihood) متصل کنیم.
آنتروپی قانون جهانی زبان هاست. مهم نیست شما از چه زبانی استفاده می کنید قوانین نظریه اطلاعات مشخص می کنند فراوانی ها چگونه توزیع می شود. دلایل مهمی برای این موضوع وجود دارد. این که چرا برخی از کلمات به صورت مشخصی در همه زبان ها پرتکرار تر از بقیه هستند و برخی کم تکرار تر هستند. روابط بین کلمات در یک دنبال نیز چنین قوانینی دارد.
https://goo.gl/oj2E9o
آنتروپی قانون جهانی زبان هاست. مهم نیست شما از چه زبانی استفاده می کنید قوانین نظریه اطلاعات مشخص می کنند فراوانی ها چگونه توزیع می شود. دلایل مهمی برای این موضوع وجود دارد. این که چرا برخی از کلمات به صورت مشخصی در همه زبان ها پرتکرار تر از بقیه هستند و برخی کم تکرار تر هستند. روابط بین کلمات در یک دنبال نیز چنین قوانینی دارد.
https://goo.gl/oj2E9o
ویرگول
مقدمه ای بر نظریه اطلاعات (قسمت دوم)
آنتروپی قانون جهانی زبان هاستدر قسمت قبلی مقدمه ای از نظریه اطلاعات را گفتیم و با مفاهیم اطلاعات و آنتروپی آشنا شدیم. در این قسمت سعی میکن…
🔵برنامه نویس نباشید!🔵
وقتی وارد رشته کامپیوتر شدم اقبال زیادی از این رشته وجود نداشت. رشته کامپیوتر در رده رشته های ششم و هفتم مهندسی بود و حتی به خاطر دارم که اطرافیان به من میگفتند "تو با این رتبه ای که داشتی می توانستی رشته های بهتری(مثلا برق و مکانیک) قبول شوی". جدای از اینکه رشته خوب در ایران فقط و فقط به بازار کار آن خلاصه می شود اوضاع بعد از چند سال عوض شد. تعداد نرم افزارها زیاد شد و با ورود موبایل و اینترنت پر سرعت و اپ های موبایلی تقریبا همه مردم درگیر با تکنولوژی هایی شدند که در علوم کامپیوتر خلاصه می شد. با روی کار آمدن شبکه های اجتماعی و استارت آپ های مختلف که یک شبه راه های صد ساله می پیمودند، کاملا ورق برگشت! در اواخر دوره کارشناسی ارشد بودم که می دیدم تقریبا همه دوستانم حتی از رشته های نامرتبط سعی میکردند برنامه نویسی موبایل یا طراحی سایت یاد بگیرند یا اینکه کارهای برنامه نویسی پیدا کنند. سیل دانشجوهای جدید باعث شیفت تاریخی رتبه های برتر کنکور در چند سال اخیر به سمت مهندسی کامپیوتر شده است. همه این اتفاقات صد البته به نفع کسانی مثل من بود که نه تنها زودتر وارد این حوزه شده بودند بلکه مدرک مرتبط هم داشتند. اما این همه این داستان نیست. این متن را برای همه کسانی می نویسم که عشقشان برنامه نویسی است. متن پیش رو ممکن است خاطر خیلی از همکاران من را آزرده کند ولی باعث نمی شود من را از بیان حقایقی که آن ها را با سختی یافته ام منصرف کند.
خیلی ها وقتی وارد این دنیا می شوند به دنبال یاد گرفتن زبان های برنامه نویسی مختلف هستند و مدام از من میپرسند قوی ترین یا بهترین زبان برنامه نویسی چیست. آن ها ساعت ها وساعت ها برای یادگرفتن چارچوب های جدید نرم افزاری(که امروزه بسیار زیاد هم شده اند و از چارچوب های طراحی سایت گرفته تا یادگیری ماشین هستند) وقت می گذارند. تمام این فعالیت ها بسیار لذت بخش هستند و من هم منکر مفید بودن آن ها نمی شوم. اما این مسیر بیراهه های زیادی هم دارد.
برای اینکه گرفتار نشوید فقط به این فکر کنید که بشر چرا کامپیوتر را درست کرد؟ آیا غیر از این است که کامپیوتر یک ابزار است؟ اگر اینطور است چرا ما تمام وقت خود را صرف یادگرفتن کار با ابزار می کنیم و به منطقی که وجود آن را ضروری کرده توجه نمی کنیم. سعی کنید برنامه نویس های حرفه ای باشید اما فقط برنامه نویس نباشید به چند دلیل:
1-برنامه نویسیِ صرف از شما یک کارگر می سازد. شما یک ابزار شناس خوب هستید اما مساله ها را نمی شناسید یا شخص دیگری آن را برای شما تعریف می کند. شما مثل یک کارگر یک وظیفه مشخص می گیرید، آن را انجام می دهید و دستمزد می گیرید. سعی کنید منطق کاری که انجام می دهید را یاد بگیرید و با آدم ها درگیر شوید. سعی کنید بدانید چطور می توان مساله را تعریف کرد و منطق کسب و کار چیست(business logic). مشتریان شما چه کسانی هستند و چه می کنند. ساز و کارهای قانونی شرکت شما برای کسب درآمد چیست. اگر کار علمی می کنید فقط ورودی نگیرید و خروجی تحویل بدهید. کامپیوترتان را خاموش کنید. قلم و کاغذ دست بگیرید و بر روی آن فکر کنید. اگر مساله ای را نمی فهمید کپی کردن چند خط کد و استفاده از یک لایبرری به شما هیچ کمکی نمیکند. fft را بفهمید نه اینکه بدانید در متلب چگونه استفاده می شود!
2-سرعت تغییر در ابزارها زیاد است. خیلی از ابزارها و حتی زبان های برنامه نویسی بعد از مدتی کنار گذاشته می شوند. اما شما انسان هستید و باید یک حل کننده مساله باشید. کنار گذاشتن یک لایبرری یا چارچوب توسط شرکتتان نباید به قیمت کنار گذاشتن شما تمام شود. سعی کنید الگوریتم ها را درک کنید و با مفاهیم سر و کله بزنید. شی گرایی را در فقط جاوا بلد نباشید. شما باید بتوانید آن را به صورت مفهومی هم توضیح دهید. شما backpropagation را باید درک کنید نه صرفا بدانید که در یک لایبری چطور باید آن را صدا زد.
3-زمان محدود است. تا چشم به هم بزنید سن شما بالا میرود و دیگر در سن بالای سی سالگی کسی شما را به عنوان یک برنامه نویسِ صرف استخدام نمی کند. شما باید بتوانید تا آن زمان چندین مهارت مهم، کاملا مستقل از برنامه نویسی را در خود پرورش دهید.
وقتی وارد رشته کامپیوتر شدم اقبال زیادی از این رشته وجود نداشت. رشته کامپیوتر در رده رشته های ششم و هفتم مهندسی بود و حتی به خاطر دارم که اطرافیان به من میگفتند "تو با این رتبه ای که داشتی می توانستی رشته های بهتری(مثلا برق و مکانیک) قبول شوی". جدای از اینکه رشته خوب در ایران فقط و فقط به بازار کار آن خلاصه می شود اوضاع بعد از چند سال عوض شد. تعداد نرم افزارها زیاد شد و با ورود موبایل و اینترنت پر سرعت و اپ های موبایلی تقریبا همه مردم درگیر با تکنولوژی هایی شدند که در علوم کامپیوتر خلاصه می شد. با روی کار آمدن شبکه های اجتماعی و استارت آپ های مختلف که یک شبه راه های صد ساله می پیمودند، کاملا ورق برگشت! در اواخر دوره کارشناسی ارشد بودم که می دیدم تقریبا همه دوستانم حتی از رشته های نامرتبط سعی میکردند برنامه نویسی موبایل یا طراحی سایت یاد بگیرند یا اینکه کارهای برنامه نویسی پیدا کنند. سیل دانشجوهای جدید باعث شیفت تاریخی رتبه های برتر کنکور در چند سال اخیر به سمت مهندسی کامپیوتر شده است. همه این اتفاقات صد البته به نفع کسانی مثل من بود که نه تنها زودتر وارد این حوزه شده بودند بلکه مدرک مرتبط هم داشتند. اما این همه این داستان نیست. این متن را برای همه کسانی می نویسم که عشقشان برنامه نویسی است. متن پیش رو ممکن است خاطر خیلی از همکاران من را آزرده کند ولی باعث نمی شود من را از بیان حقایقی که آن ها را با سختی یافته ام منصرف کند.
خیلی ها وقتی وارد این دنیا می شوند به دنبال یاد گرفتن زبان های برنامه نویسی مختلف هستند و مدام از من میپرسند قوی ترین یا بهترین زبان برنامه نویسی چیست. آن ها ساعت ها وساعت ها برای یادگرفتن چارچوب های جدید نرم افزاری(که امروزه بسیار زیاد هم شده اند و از چارچوب های طراحی سایت گرفته تا یادگیری ماشین هستند) وقت می گذارند. تمام این فعالیت ها بسیار لذت بخش هستند و من هم منکر مفید بودن آن ها نمی شوم. اما این مسیر بیراهه های زیادی هم دارد.
برای اینکه گرفتار نشوید فقط به این فکر کنید که بشر چرا کامپیوتر را درست کرد؟ آیا غیر از این است که کامپیوتر یک ابزار است؟ اگر اینطور است چرا ما تمام وقت خود را صرف یادگرفتن کار با ابزار می کنیم و به منطقی که وجود آن را ضروری کرده توجه نمی کنیم. سعی کنید برنامه نویس های حرفه ای باشید اما فقط برنامه نویس نباشید به چند دلیل:
1-برنامه نویسیِ صرف از شما یک کارگر می سازد. شما یک ابزار شناس خوب هستید اما مساله ها را نمی شناسید یا شخص دیگری آن را برای شما تعریف می کند. شما مثل یک کارگر یک وظیفه مشخص می گیرید، آن را انجام می دهید و دستمزد می گیرید. سعی کنید منطق کاری که انجام می دهید را یاد بگیرید و با آدم ها درگیر شوید. سعی کنید بدانید چطور می توان مساله را تعریف کرد و منطق کسب و کار چیست(business logic). مشتریان شما چه کسانی هستند و چه می کنند. ساز و کارهای قانونی شرکت شما برای کسب درآمد چیست. اگر کار علمی می کنید فقط ورودی نگیرید و خروجی تحویل بدهید. کامپیوترتان را خاموش کنید. قلم و کاغذ دست بگیرید و بر روی آن فکر کنید. اگر مساله ای را نمی فهمید کپی کردن چند خط کد و استفاده از یک لایبرری به شما هیچ کمکی نمیکند. fft را بفهمید نه اینکه بدانید در متلب چگونه استفاده می شود!
2-سرعت تغییر در ابزارها زیاد است. خیلی از ابزارها و حتی زبان های برنامه نویسی بعد از مدتی کنار گذاشته می شوند. اما شما انسان هستید و باید یک حل کننده مساله باشید. کنار گذاشتن یک لایبرری یا چارچوب توسط شرکتتان نباید به قیمت کنار گذاشتن شما تمام شود. سعی کنید الگوریتم ها را درک کنید و با مفاهیم سر و کله بزنید. شی گرایی را در فقط جاوا بلد نباشید. شما باید بتوانید آن را به صورت مفهومی هم توضیح دهید. شما backpropagation را باید درک کنید نه صرفا بدانید که در یک لایبری چطور باید آن را صدا زد.
3-زمان محدود است. تا چشم به هم بزنید سن شما بالا میرود و دیگر در سن بالای سی سالگی کسی شما را به عنوان یک برنامه نویسِ صرف استخدام نمی کند. شما باید بتوانید تا آن زمان چندین مهارت مهم، کاملا مستقل از برنامه نویسی را در خود پرورش دهید.
4-اکنون دیگر همه برنامه نویسی می کنند. برنامه نویسی ابزاری شده است که از زمین شناس تا متخصص ژنتیک و حتی بازاریاب ها آن را فرا گرفته اند. شاید اعتراض کنید که کدهای آن ها بسیار محدود و خارج از اصول است. اما وقتی وارد تعامل با آنها می شوید متوجه می شوید آنها نه تنها برنامه نویس های خوبی هستند بلکه خیلی چیزهای دیگر(مثل زمین شناسی، ژنتیک و بازاریابی) هم می دانند در حالی که شما فقط برنامه نویسی می دانید! آگاهی به این موضوع ممکن است بسیار دردناک باشد اما واقعیتی است که اگر دیر متوجه آن بشوید شاید فرصت مناسب برای جبران آن نداشته باشید. در اولین قدم باید یک انقلاب مهم در افکارتان نسبت به برنامه نویسی ایجاد کنید و آن را از مرکز دنیاتان قدری کنار بگذارید.
5-باز هم تاکید می کنم باید بتوانید روابط اجتماعی خود را گسترش دهید. خیلی از برنامه نویسان تازه کار تصور می کنند با افزایش مهارت صرف می توانند به هر جایی که می خواهند برسند. اما وقتی وارد یک شرکت واقعی یا آزمایشگاه بزرگ می شوند و با آدم های واقعی سر و کله می زنند متوجه می شوند مهارت های تکنیکی شاید تنها نصف کل مسیر باشد. شما اگر نتوانید در یک تیم زندگی کنید و با آنها به صورت سازنده تعامل کنید نمی توانید هیچ کار بزرگی انجام دهید.
6-برنامه بنویسید که مشکلات را حل کنید! برنامه نویسی در نهایت باید برای حل یک مشکل باشد. شما باید خلاق باشید. حل کننده مسایل باشید. شما باهوش هستید و باید از هوشتان به نفع جامعه تان استفاده کنید. انجام دادن چیزی که وقتی پیر شدید بتوانید آن را از لحاظ اخلاقی ارزشمند بدانید. شاید بسیار آرمان گرایانه بنظر برسد اما اگر برنامه نویسی باعث نمی شود مشکلی از مردم حل کنید باید دوباره به آن فکر کنید. راه های دیگری هم برای فقط کسب پول هست!
برای رسیدن به همه اینها شما نیاز دارید که geek به معنای اغراق آمیز آن نباشید. این اتفاق متاسفانه در اهالی برنامه نویس بسیار اتفاق می افتد. باید دایره مطالعه تان را گسترش دهید و علایق دیگری غیر از پشت کامپیوتر نشستن را در خودتان پرورش دهید. اگر کسی ندارد که آخر هفته تان را را با او بگذرانید یا کاری غیر از برنامه نویسی در لیست تفریحاتتان نیست باید متوجه آژیر های خطر باشید و شروع کنید به تغییر دادن رویه هایتان تا روزی نرسد که شما هم فرقی با کامپیوتر نداشته باشید. فراموش نکنید ما قبل از همه چیز انسان هستیم و باید زندگی کنیم.
5-باز هم تاکید می کنم باید بتوانید روابط اجتماعی خود را گسترش دهید. خیلی از برنامه نویسان تازه کار تصور می کنند با افزایش مهارت صرف می توانند به هر جایی که می خواهند برسند. اما وقتی وارد یک شرکت واقعی یا آزمایشگاه بزرگ می شوند و با آدم های واقعی سر و کله می زنند متوجه می شوند مهارت های تکنیکی شاید تنها نصف کل مسیر باشد. شما اگر نتوانید در یک تیم زندگی کنید و با آنها به صورت سازنده تعامل کنید نمی توانید هیچ کار بزرگی انجام دهید.
6-برنامه بنویسید که مشکلات را حل کنید! برنامه نویسی در نهایت باید برای حل یک مشکل باشد. شما باید خلاق باشید. حل کننده مسایل باشید. شما باهوش هستید و باید از هوشتان به نفع جامعه تان استفاده کنید. انجام دادن چیزی که وقتی پیر شدید بتوانید آن را از لحاظ اخلاقی ارزشمند بدانید. شاید بسیار آرمان گرایانه بنظر برسد اما اگر برنامه نویسی باعث نمی شود مشکلی از مردم حل کنید باید دوباره به آن فکر کنید. راه های دیگری هم برای فقط کسب پول هست!
برای رسیدن به همه اینها شما نیاز دارید که geek به معنای اغراق آمیز آن نباشید. این اتفاق متاسفانه در اهالی برنامه نویس بسیار اتفاق می افتد. باید دایره مطالعه تان را گسترش دهید و علایق دیگری غیر از پشت کامپیوتر نشستن را در خودتان پرورش دهید. اگر کسی ندارد که آخر هفته تان را را با او بگذرانید یا کاری غیر از برنامه نویسی در لیست تفریحاتتان نیست باید متوجه آژیر های خطر باشید و شروع کنید به تغییر دادن رویه هایتان تا روزی نرسد که شما هم فرقی با کامپیوتر نداشته باشید. فراموش نکنید ما قبل از همه چیز انسان هستیم و باید زندگی کنیم.
زمان Imagenet برای پردازش زبان طبیعی فرارسیده است!
دیتاست imagenet انقلابی در پردازش تصویر و هوش مصنوعی ایجاد کرد طوری که بسیاری از مسایل دیرپای این حوزه بعد از مدتی با روش های یادگیری عمیق به زانو در آمدند و توسط ماشین قابل حل شدند. به سرعت نتایج چنین راه حل هایی حتی صنعتی شد و میوه های آن را حتی بر روی یک موبایل ساده می توان دید! (آنلاک کردن گوشی با تصویر چهره تان)
شاید چموش ترین بخش هوش مصنوعی پردازش زبان طبیعی باشد چرا که اساسی ترین سوالات بشر در مورد هوش ماشین به یادگیری زبان توسط ماشین مرتبط می شود. آزمون معروف تورینگ سند محکمی برای این ادعا است. تمام تلاش های زبان شناسان، معناشناسان، دانشمندان علوم کامپیوتر، علوم شناختی و عصب شناسی با نظریات ابتدایی از زبان در دهه های ۶۰ و ۷۰ میلادی در برابر واقعیت زبان های بشری به خاکستر تبدیل شد. پروژه های جاه طلبانه زیادی با شکست مواجه شدند اما امروز متخصصین با فروتنی بسیار بیشتر به نتایج شگفت انگیزی رسیده اند.
در سالهای گذشته مدل سازی احتمالاتی زبان، در مرکز تقریبا تمامی تلاش ها برای برملا کردن چند راز از این هزارتوی عجیب و غریب قرار گرفته است. مدل های زیادی ارایه شده اند که هر کدام ساده سازی های زیادی انجام میدهد. هدف این مدلسازی ها اتوماتیک کردن برخی از کارهایی است که مردم می توانند با زبان انجام دهند. مثلا آیا دو جمله از لحاظ معنایی یکسان هستند؟ شباهت معنایی جملات چقدر است؟ چه چیزی از چند جمله می توان نتیجه گرفت؟چگونه می توان یک متن را خلاصه کرد؟ این جمله مثبت است یا منفی؟ و ده ها وظیفه دیگر که اگرچه برای انسان فوق العاده ساده بنظر می رسد اما الگوریتم ها نمی توانند برای آن کاری بکنند.
خیلی از مدل ها در طول چندین سال فقط توانستند پیشرفت های اندکی در این زمینه داشته باشند. اما یکی از این مدل های احتمالاتی به اسم BERT که سه ماه پیش توسط گوگل ارایه شد برای اولین بار توانست از این سد عبور کند و در بسیاری از وظایف تعریف شده حتی از انسان پیشی بگیرد!! این تقریبا نخستین بار است که ماشین در درک زبان توانسته از انسان پیشی بگیرد. اگر با ادبیات موضوع این زمینه آشنا باشید متوجه می شوید مدلی که گوگل به آن رسیده خیلی پیچیده نیست. ایده اصلی در واقع به طرز عجیبی ساده است. در مدل های معمول برای زبان از شبکه های عصبی ای استفاده می شود که یک حالت را نگه می دارند و همزمان که بر روی کلمات یک متن حرکت می کنند آن حالت را بروز رسانی می کنند. دلیل اینکه چرا کل متن را همزمان به عنوان ورودی نمی دهند این است که در این صورت مدل زبانی نمی تواند کلمه بعدی را پیش بینی کند چون ما از قبل آن را به شبکه خورانده ایم. شبکه عصبی BERT از یک کلک ساده استفاده می کند. به جای دادن کل متن به صورت تصادفی تنها بخشی از کلمات از متن حذف می شوند اما شبکه همزمان می تواند اول و آخر جملات را ببیند. به این مدل Masked Language Model گفته می شود. این بیشتر شبیه به cloze test هایی است که دانش آموزان ابتدایی پر می کنند. چند کلمه انداخته می شود و از آن ها خواسته می شود که جمله را کامل کنند. اینطور نیست که اولین کلمه را به دانش آموز نشان دهند و از اون بخواهند کل جمله را کامل کند چنین چیزی ممکن نیست اما این کاری بوده که سالها در NLP انجام می شده!! رویکرد قدیمی به تولید جملات ضعیف، تکراری و گاه از لحاظ گرامری غلط منجر می شد.
کالبدشکافی شبکه عصبی BERT حقایق جالبی را در مورد آن برملا می کند. BERT دقیقا مثل ما هنگام برخورد با یک جمله به قسمت های مختلف آن مثل فاعل و فعل توجه می کند و سعی میکند روابط را در یک شبکه از ارتباطات یاد بگیرد. چندین الگو کشف شده است که تقریبا قابل توضیح هستند هرچند شبکه های عصبی در حالت کلی قابلیت توضیح دهندگی زیادی در لایه های داخلی ندارند. مثلا نمی توان یک نورون را بیرون کشید و پرسید که این نورون دقیقا دارد چه کاری میکند چنین چیزی در پردازش تصویر و پردازش زبان طبیعی مشترک است.
گوگل سورس کد BERT را بر روی گیت هاب قرار داده است. برای مطالعه بیشتر چندین لینک جالب و خواندنی اینجا می گذارم.
سورس کد BERT:
https://github.com/google-research/bert
یک توضیح ساده در مورد BERT:
https://jalammar.github.io/illustrated-bert/
الگوهای کشف شده در BERT:
https://towardsdatascience.com/deconstructing-bert-distilling-6-patterns-from-100-million-parameters-b49113672f77
دیتاست imagenet انقلابی در پردازش تصویر و هوش مصنوعی ایجاد کرد طوری که بسیاری از مسایل دیرپای این حوزه بعد از مدتی با روش های یادگیری عمیق به زانو در آمدند و توسط ماشین قابل حل شدند. به سرعت نتایج چنین راه حل هایی حتی صنعتی شد و میوه های آن را حتی بر روی یک موبایل ساده می توان دید! (آنلاک کردن گوشی با تصویر چهره تان)
شاید چموش ترین بخش هوش مصنوعی پردازش زبان طبیعی باشد چرا که اساسی ترین سوالات بشر در مورد هوش ماشین به یادگیری زبان توسط ماشین مرتبط می شود. آزمون معروف تورینگ سند محکمی برای این ادعا است. تمام تلاش های زبان شناسان، معناشناسان، دانشمندان علوم کامپیوتر، علوم شناختی و عصب شناسی با نظریات ابتدایی از زبان در دهه های ۶۰ و ۷۰ میلادی در برابر واقعیت زبان های بشری به خاکستر تبدیل شد. پروژه های جاه طلبانه زیادی با شکست مواجه شدند اما امروز متخصصین با فروتنی بسیار بیشتر به نتایج شگفت انگیزی رسیده اند.
در سالهای گذشته مدل سازی احتمالاتی زبان، در مرکز تقریبا تمامی تلاش ها برای برملا کردن چند راز از این هزارتوی عجیب و غریب قرار گرفته است. مدل های زیادی ارایه شده اند که هر کدام ساده سازی های زیادی انجام میدهد. هدف این مدلسازی ها اتوماتیک کردن برخی از کارهایی است که مردم می توانند با زبان انجام دهند. مثلا آیا دو جمله از لحاظ معنایی یکسان هستند؟ شباهت معنایی جملات چقدر است؟ چه چیزی از چند جمله می توان نتیجه گرفت؟چگونه می توان یک متن را خلاصه کرد؟ این جمله مثبت است یا منفی؟ و ده ها وظیفه دیگر که اگرچه برای انسان فوق العاده ساده بنظر می رسد اما الگوریتم ها نمی توانند برای آن کاری بکنند.
خیلی از مدل ها در طول چندین سال فقط توانستند پیشرفت های اندکی در این زمینه داشته باشند. اما یکی از این مدل های احتمالاتی به اسم BERT که سه ماه پیش توسط گوگل ارایه شد برای اولین بار توانست از این سد عبور کند و در بسیاری از وظایف تعریف شده حتی از انسان پیشی بگیرد!! این تقریبا نخستین بار است که ماشین در درک زبان توانسته از انسان پیشی بگیرد. اگر با ادبیات موضوع این زمینه آشنا باشید متوجه می شوید مدلی که گوگل به آن رسیده خیلی پیچیده نیست. ایده اصلی در واقع به طرز عجیبی ساده است. در مدل های معمول برای زبان از شبکه های عصبی ای استفاده می شود که یک حالت را نگه می دارند و همزمان که بر روی کلمات یک متن حرکت می کنند آن حالت را بروز رسانی می کنند. دلیل اینکه چرا کل متن را همزمان به عنوان ورودی نمی دهند این است که در این صورت مدل زبانی نمی تواند کلمه بعدی را پیش بینی کند چون ما از قبل آن را به شبکه خورانده ایم. شبکه عصبی BERT از یک کلک ساده استفاده می کند. به جای دادن کل متن به صورت تصادفی تنها بخشی از کلمات از متن حذف می شوند اما شبکه همزمان می تواند اول و آخر جملات را ببیند. به این مدل Masked Language Model گفته می شود. این بیشتر شبیه به cloze test هایی است که دانش آموزان ابتدایی پر می کنند. چند کلمه انداخته می شود و از آن ها خواسته می شود که جمله را کامل کنند. اینطور نیست که اولین کلمه را به دانش آموز نشان دهند و از اون بخواهند کل جمله را کامل کند چنین چیزی ممکن نیست اما این کاری بوده که سالها در NLP انجام می شده!! رویکرد قدیمی به تولید جملات ضعیف، تکراری و گاه از لحاظ گرامری غلط منجر می شد.
کالبدشکافی شبکه عصبی BERT حقایق جالبی را در مورد آن برملا می کند. BERT دقیقا مثل ما هنگام برخورد با یک جمله به قسمت های مختلف آن مثل فاعل و فعل توجه می کند و سعی میکند روابط را در یک شبکه از ارتباطات یاد بگیرد. چندین الگو کشف شده است که تقریبا قابل توضیح هستند هرچند شبکه های عصبی در حالت کلی قابلیت توضیح دهندگی زیادی در لایه های داخلی ندارند. مثلا نمی توان یک نورون را بیرون کشید و پرسید که این نورون دقیقا دارد چه کاری میکند چنین چیزی در پردازش تصویر و پردازش زبان طبیعی مشترک است.
گوگل سورس کد BERT را بر روی گیت هاب قرار داده است. برای مطالعه بیشتر چندین لینک جالب و خواندنی اینجا می گذارم.
سورس کد BERT:
https://github.com/google-research/bert
یک توضیح ساده در مورد BERT:
https://jalammar.github.io/illustrated-bert/
الگوهای کشف شده در BERT:
https://towardsdatascience.com/deconstructing-bert-distilling-6-patterns-from-100-million-parameters-b49113672f77
GitHub
GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT
TensorFlow code and pre-trained models for BERT. Contribute to google-research/bert development by creating an account on GitHub.
🔵راز JPEG🔵
خیلی برای ما پیش آمده است که وقتی عکسی در اینترنت میبینیم با پدیده بارگذاری (لود شدن) عکس مواجه می شویم. یعنی اول یک تصویر تار میبینیم و سپس جزییات بیشتری به آن اضافه می شود تا اینکه می توانیم آن را کامل ببینیم. اما چرا چنین است؟ دلیل این نحوه بارگذاری در فشرده سازی jpg نهفته است. در این روش از تبدیل DCT(Discrete Cosine Transform) استفاده می شود. به این ترتیب که دقیقا شبیه به تبدیل فوریه به جای نگه داشتن کل تصویر ضریب های یک تبدیل فرکانسی از آن نگه داشته می شود. این ضرایب برای فرکانس های کمتر (کلیات تصویر) تا فرکانس های بیشتر(جزییات بیشتر) وجود دارند. ضرایب برای فرکانس های کمتر حاوی اطلاعات بیشتری هستند و حتی فرستادن بخشی از کل طیف فرکانسی کافی است تا شما تصویر را بدون تقریبا هیچ خدشه ای ببینید. زمانی که یک تصویر در اینترنت لود می شود. به جای فرستادن کل تصویر مرورگر شما ابتدا ضرایبِ فرکانس های پایین تر را گرفته و سعی میکند با استفاده از آن ها تصویر را نشان دهد با رسیدن ضرایبِ فرکانس های بالاتر مرورگر جزییات بیشتری به تصویر اضافه می کند تا بتواند آن را به صورت کامل تر بازیابی کند. در تصویر زیر از 900 ضریب تنها 435 تای اول آن را نشان داده ایم. می بینید حتی با 60 ضریب هم تصویر تقریبا کامل است. کد متلب مربوط به آن را می توانید دانلود کنید و خودتان هم تست کنید.
منبع: https://www.mathworks.com/examples/image/mw/images-ex44409888-image-compression-with-the-discrete-cosine-transform
خیلی برای ما پیش آمده است که وقتی عکسی در اینترنت میبینیم با پدیده بارگذاری (لود شدن) عکس مواجه می شویم. یعنی اول یک تصویر تار میبینیم و سپس جزییات بیشتری به آن اضافه می شود تا اینکه می توانیم آن را کامل ببینیم. اما چرا چنین است؟ دلیل این نحوه بارگذاری در فشرده سازی jpg نهفته است. در این روش از تبدیل DCT(Discrete Cosine Transform) استفاده می شود. به این ترتیب که دقیقا شبیه به تبدیل فوریه به جای نگه داشتن کل تصویر ضریب های یک تبدیل فرکانسی از آن نگه داشته می شود. این ضرایب برای فرکانس های کمتر (کلیات تصویر) تا فرکانس های بیشتر(جزییات بیشتر) وجود دارند. ضرایب برای فرکانس های کمتر حاوی اطلاعات بیشتری هستند و حتی فرستادن بخشی از کل طیف فرکانسی کافی است تا شما تصویر را بدون تقریبا هیچ خدشه ای ببینید. زمانی که یک تصویر در اینترنت لود می شود. به جای فرستادن کل تصویر مرورگر شما ابتدا ضرایبِ فرکانس های پایین تر را گرفته و سعی میکند با استفاده از آن ها تصویر را نشان دهد با رسیدن ضرایبِ فرکانس های بالاتر مرورگر جزییات بیشتری به تصویر اضافه می کند تا بتواند آن را به صورت کامل تر بازیابی کند. در تصویر زیر از 900 ضریب تنها 435 تای اول آن را نشان داده ایم. می بینید حتی با 60 ضریب هم تصویر تقریبا کامل است. کد متلب مربوط به آن را می توانید دانلود کنید و خودتان هم تست کنید.
منبع: https://www.mathworks.com/examples/image/mw/images-ex44409888-image-compression-with-the-discrete-cosine-transform
زوم هایی که گاهی در فیلم های اکشن میبینیم چقدر به واقعیت نزدیک هستند؟ آیا دیدن پلاک یک ماشین از چند کیلومتر قابل انجام است؟ می توانید خودتان چک کنید. دوربین های ۲۵ میلیارد پیکسلی زیر تصویر هایی منحصر بفرد با زوم هایی باور نکردنی در اختیار می گذارند
https://www.bigpixel.cn/
https://www.bigpixel.cn/