جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'مهندسی'.
2 نتیجه پیدا شد
-
سلام و درود، ? این پست صرفاً جنبهی مشاوره و به اشتراک گذاری تجربیات را دارد (بنابراین نحویِ بیان آن عامیانه است). من @کامبیز اسدزاده : Kambiz Asadzadeh : علاوه بر برنامهنویسی و علاقهی شدیدی که دنیای تکنولوژی و مخصوصاً مهندسی کامپیوتر و به ویژه برنامهنویسی در حوزهی استارتآپی دارم، سالهاست که به عنوان منتور فنیِ استارتآپها در رویدادها، جلسات و دورههمیهای بسیاری شرکت و در محور رُشد فردی فنی فعالیت به استارتآپهای بسیاری کمک کرده ام. با توجه به منتورینگ انواع مختلف استارتآپها در حوزههای IT مشکلات، سوالات و موارد بسیاری رو شناسایی و برای آنها راهکارهایی رو ارائه دادهام که به نوبهی خودم برخی از آنها را در اختیار شما قرار خواهم داد. بهتره قبل از هر چیز تعریفی از منتور (Mentor) و منتورینگ داشته باشیم! بنابراین مقالهی زیر را حتماً مطالعه کنید. حال با توجه به تجربیات مربوط به این حوزه، لازم دونستم بخشی از این راهکارها رو در اختیار کسانی قرار بدم که مُدام در ذهن خود دنبال پاسخی برای چگونکیهای رسیدن به یک مهارت مطلوب فردی هستن. مدتی هست من در گروهها و شبکههای اجتماعی بسیاری مشاهده میکنم که افراد تازه کار به دنبال این هستند که چگونه و به چه شیوهای میتونن برنامهنویسی حرفهای و مفید را یاد بگیرند. پاسخ این سوال پیچیده نیست، اما شاید خصوصیاتی را که باید بر روی آنها تمرکز داشته باشید رو به خوبی نمیشناسید! من به شما کمک میکنم تا در این مسیر مسائلی که واقعاً باید به آنها دقت کنید رو شناخته و اونها رو در نظر بگیرید. خصوصیات یک برنامهنویس حرفهای چیست؟ علاقه و استعداد در حوزهی برنامهنویسی (داشتن ارادهی قوی). سِمِج و کُنجکاو بودن. شکست ناپذیر (خستگی ناپذیر). مخالف هر گونه بهانه و تنبلی - به کار گیری روشهای صحیح حل مسائل و رسیدن به پاسخ سوالات. رقابت با هیچکس به جز دیروز خودِت! (رقیبت باید خودت باشی نه شخصِ خاصی) از دیگران الگو بگیر اما با کسی به جز خودت رقابت نکن. کم توقع از لحاظ کمک گرفتن از دیگران بر روی مسائل ساده باش (پر توقع از لحاظ رسیدن به پاسخ با تلاشهای فردی باش). تعصب نداشتن بر یک حوزه یا زبان یا هر ابزاری (زبانهای برنامهنویسی لوازم و ابزارهای جعبهابزار یک برنامهنویس هستند). هدف داشتن (هدف مفید - نه مُخرب). آینده نگر بودن (همیشه احتمالات رو در نظر بگیر و چشم بسته دنبال چیزی نباشید) و حرف هر کسی رو در بیان اول بدون تحقیق (سند) قبول نکن. حرف شنوی و استفاده از تجربیات دیگران بسیار خوب هست (اما باید مطمئن باشید که اون پیشنهاد صحیح هست نه غلط!) حالا ممکن پیشنهاد دهنده استاد دانشگاه باشه یا میتونه یکی از ما داخل شبکههای اجتماعی باشه! (بهتره دنبال منتور باشید). همیشه یک قدم از چیزی که هستید جولو تر باشید. حرفهای باش! حرفهایهای برنامهنویسی رو با اخلاقِ خوبشون باید شناخت. عدم حسادت و غرور در آموزشِ آموختهها و تجربیات یکی از بهترین نکات حرفهای بودن است. من چطور میتونم یک برنامهنویس حرفهای بشم؟ پاسخ، با توجه با خصوصیات بالا، یک برنامهنویس با تلاش مستمر و متکی به دانش و مستندات صحیح میتونه با مرور زمان مهارت خودش رو افزایش و تجربیات و سوابش و رزومش رو قوی کنه. به هیچ عنوان راه صد ساله را یک شبه نمیتونه بره! آیا دانشگاه در برنامهنویسِ مفید شدن مهم است؟ این سوال بسیار زیاد به گوش میخوره، اما حقیقت اینه که دانشگاه به عنوان یک ابزار ساخت و پیشرفت فردی بشما نمیاد! متاسفانه دانشگاهها و دانشجویانی که با هدف التماس به اساتید و دیگر افراد به دنبال پاس کردن دروس دانشگاهی هستن هیچ شانسِ موفقیتی در رسیدن به یک حرفهای شدن رو ندارن! نتیجهی این شیوه از یادگیری و آموزش چیزی به جز فارغالتحصیل شدن همراه با یک کاغذ پاره نخواهد بود و هیچ جایی در بازار و دنیای واقعی نخواهد داشت. البته منظور از این صحبتها این نیست که دانشگاه مفید نبوده و تاثیری در موفقیت نداره، اما حقیقت اینه که علم واقعیِ برنامهنویسی با توجه به نظام آموزشی و شرایطی که وجود داره به دست نمیاد. چطور میتوانم به پاسخ سوالاتی که دارم برسم؟ خوشبختانه دنیای مُدرن امروزی زمینهای برای برقراری ارتباط بین یکدیگر را به خوبی فراهم کرده، در صورتی که شما سعی خودتون رو کردین اما نتونستین مشکلی که با اون مواجه شدین رو حل کنید، جای نگرانی نداره! همهی ما یک استاد مشترک داریم (اسمش گوگل Google) هست. شما میتونید با جستجو در این موتور جستجوگر به ۱۰۰٪ پاسخهای خود برسید. نکته: سعی کنید سوالات خودتون رو به زبان علمی بپرسید (انگلیسی) حتی اگه زبان شما دست و پا شکسته باشه درصد موفقیت و رسیدن به پاسخ بهتر و سریعتر در این حالت بسیار زیاده. بنابراین شما میتونید پاسخ سوالات خودتون رو خیلی راحت با چند کلمهی مشخص بپرسید مثل نمونههای زیر: Why should I learn C++ in 2019? How to declare an array in C++? How to declare a string in Java? Why do we need pure virtual function in C++? How do I create a class in Visual Studio 2017? How long will it take to learn Python? مطمئن باشید جستجوگر گوگل تحت هوش مصنوعی خودش بهترین و نزدیکترین پاسخها رو نسبت به سوال شما پیشنهاد خواهد داد! این کار باعث میشه حتی شمایی که به سوال پُرسی مغرور هستید یا حتی شمایی که به خودتون زحمت نمیدین جستجو کنید به راحتی به پاسخهایی برسید که قراره اون رو از کسی بپرسید! یک برنامهنویس حرفهای رو چطور میشه شناخت؟ یک برنامهنویس حرفهای ادعای تو خالی ندره! هر زمان که دیدین یک برنامهنویس از دانش خودش ادعا میکنه مطمئن باشید اونوطور که باید به تکامل نسبی در این علوم نرسیده! دنیای برنامهنویسی نامحدود و بسیار گسترده هست. برنامهنویسِ حرفهای معمولاً مشتاق به آموزش و یاری دیگران هم داره، معمولاً از تجربیات حرفهای خودشون در اختیار دیگران قرار میدن. البته این بستگی به شرایط هم داره (ممکنه کسی به خاطر مشغلهی زندگی روزمره) نتونه اونطور که باید به دیگران کمک کنه (شاید هم اصلاً علاقهای به یاد دادن نداره ?) شاید هم اعتماد به نفس کافی نداشته باشه که همهی اینها طبیعی است. اما Github و سایتهای مرجع، مقالات، کتابها و نمونهکارها نیز نمونه مثال خوبی برای پیدا کردن منابع به اشتراکگذاری چنین افرادی هست که میتونه در شناخت مهارتهاش ملاک باشه. صحبتهای شخصی مثل استیو جابز رو در کنفرانس Stanford سال ۲۰۰۵ پیگیر باشید ببینید تنها رابطش با دانشگاه چی بوده. البته منظورم این نیست که خدایی نکرده دانشگاه رو بیخیال بشید خیر! چون خیلیها خصوصیات بالارو ندارند و بهتره تشریف ببرن دانشگاه و همونجا شاید به کمک کاغذ پاره یه چیزی شدن ? رضایت به یک حقوق کارمندی هم دلیل بدی نیست...! اما اگه میخوای دنیا رو بسازی باید فراتز از چهارچوب محدودی که برات ساختن تفکر کنی! خلاصهی این صحبتها از نظر من = تلاش مکرر در قالب (خودآموزی) هست باید به خودت، فرصت و نعمتی که خالقِت بهت داده اطمینان و اعتقاد داشته باشی). إنَّ لِكُلِّ شَيءٍ زَكاةً ، وزَكاةُ العِلمِ أن يُعَلِّمَهُ أهلَهُ. امام صادق عليه السلام: هرچيزى زكاتى دارد و زكات دانش، آموختن آن است به اهلش. به فرموده رسول خدا (صلی الله علیه و آله): یا عالم باش یا در حال آموختن دانش و وقت خود را در بیهودگی و خوشگذرانی صرف نکن. نظرات دیگر... آنتونی جی. دی آنجلو: اشتیاقتان برای یادگیری را توسعه دهید، تا هرگز در راه رشد و تعالی متوقف نشوید. آلبرت اینشتین: تنها چیزی که در یادگیری من تداخل ایجاد میکند، تحصیلاتم است. وینستون چرچیل: من شخصا همیشه آماده یادگیری هستم، اگرچه دوست ندارم همیشه تحت تعلیم باشم. افلاطون: دانشی که همراه با اجبار کسب شود در ذهن نمیماند. Education is the most powerful weapon which you can use to change the world. - Nelson Mandela I have no special talent. I am only passionately curious. - Albert Einstein A person who won't read has no advantage over one who can't read. - Mark Twain احتمال بهروز رسانی و ادامهی این پست وجود دارد...
-
مهندسی ویژگیها (FE) بخش بزرگی از یادگیری ماشین (ML) و یادگیری عمیق است. مقاله فوق را برای آشنایی بیشتر با اینکه ویژگی مهندسی چگونه به توسعهدهنگان در کار با داده کمک میکند مطالعه کنید. دادهها بدون توجه به اندازه و مقایس کسبوکارهای مُدرن، شرکتها و سازمانها به عنوان دارایی از نوع طبقه-اولِ آنها تبدیل شده است. هر سیستم هوشمند، صرف نظر از پیچیدگی آن، باید بر اساس داده باشد. در قلب هر سیستم هوشمند، ما یک یا چند الگوریتم بینش دادهای را بر اساس مجموعهای از دادههای یادگیری، مانند یادگیری ماشین، یادگیری عمیق و یا روشهای آماری استفاده میکنیم که این اطلاعات را برای جمع آوری دانش و ارائه بینش هوشمند بیش از یک دوره زمانی نیاز داریم. الگوریتمها خودشان کاملاً مجزا کار میکنند و نمیتوانند خارج از جعبه دادههای خام که برای آنها مشخص شده است کار کنند. هر سیستم بینش اطلاعاتی هوشمند، اساساً شامل یک خط یا نقطهی سر-به-سر با استفاده از دادههای خام برای استفاده از تکنیکهای پردازش دادهها جهت گردآوری، پردازش و خواص ویژگیهای مهندسی از این دادهها است. ما معمولاً تکنیکهایی مانند مُدلهای آماری یا مدلهای یادگیری ماشین را برای مدل سازی بر روی این ویژگیها استفاده میکنیم و در صورت لزوم برای استفاده آنها در آینده بر اساس مشکلاتی که میتوان به آنها اشاره کرد به صورت دستی حل میشوند. به طور معمول یک سامانهی یادگیری ماشین مبتنی بر «فرایندهای استاندارد صنعت متقابل برای دادهکاوی» در زیر نشان داده شده است. به دست آوردن دادههای خام و ساختن مُدل بر روی این دادهها به طور مستقیم میتواند به عنوان عملی بیمورد تلقی شود، زیر ما نتایج و کارایی مورد نظر را نمیگیریم و همچنین الگوریتمها خود به طور خودکار ویژگی معنی دار از دادههای خامِ ساده را به صورت خودکار نمایش نمیدهند. جنبهی تهیه دادها در شکل بالا ذکر شده است، جایی که ما متودولوژیهای مختلفی را برای استخراج ویژگیها یا ویژگیهای معنی دار از دادههای خامِ پس از تجزیه و تحلیل مورد نیاز از پیش رونده و پیش پردازش برخورد میکنیم. مهندسی ویژگی یک هنر و همچنین یک عِلم است و به همین دلیل دانشمندانِ دادهها اغلب ۷۰٪ از زمان خود را در مرحله آماده سازی دادهها قبل از فازِ مُدل سازی صرف میکنند. این به ما درکِ (بینشِ) این را میدهد که چرا ویژگی مهندسی یک فرایند تبدیل اطلاعات (دادهها) به یک ویژگی به عنوان ورودی برای مُدلهای یادگیری ماشین عمل میکند. یعنی آن ویژگی با کیفیتِ خوب در بهبود عملکرد کلی و دقت مُدل کمک میکند. ویژگی ها نیز به سوالات اصلی و اساسی بسیار وابسته هستند. بنابراین، حتی ممکن است کار یادگیری ماشین در سناریوهای متفاوت مانند طبقهبندی رویدادهای IoT به رفتارهای عادی و غیر طبیعی یا طبقهبندی احساسات مشتری، ویژگیهای استخراج شده در هر سناریو بسیار متفاوت از یکدیگر عمل کند. ویژگیها چه چیزهایی هستند؟ یک ویژگی، به طور معمول، یک نمایش خاص در رأس دادههای خام است که خصوصیات قابل اندازهگیری آن به صورت منحصربفرد (خصوصی) است. که معمولاً در یک ستون از یک مجموعه داده نقش بسته اند. با توجه به یک مجموعهای از دادههای دو بعدی، هر مشاهده توسط یک ردیف و هر ویژگی توسط یک ستون نشان داده میشود که یک مقدار خاص برای مشاهده دارد. بنابراین، مانند مثال در شکل بالا، هر سطر به طور خاص یک ویژگی از بُردار را نشان میدهد و همه آنها مجموعهای از ویژگیها در همه مشاهدات به شمار میآیند، همچنین یک ماتریس ویژگی دو بُعدی است، که به عنوان یک مجموعهای از ویژگیها شناخته میشود. این شبیه به قاب دادهها یا صفحات گستردهای است که داده های دو بعدی را نشان میدهند. به طور معمول، الگوریتمهای یادگیری ماشین با این ماتریسهای عددی یا تانسورها کار میکنند. از این رو بیشترین تکنیکهای ویژگیهای مهندسی تبدیل دادههای خام به عنوان نمایندهای از دادههایی که میتوانند توسط این الگوریتم ها قابل فهم و درک باشند را انجام میدهد. ویژگیها میتوانند از دو نوع اصلی بر اساس مجموعه دادهها باشند. ویژگیهای خام (خالص) ذاتی مستقیماً از مجموعه دادهها و بدون دستکاری اطلاعات و یا مهندسی اضافی به دست میآیند. ویژگیهای مشتق شده معمولاً از ویژگیهای مهندسی به دست میآیند، جایی که ویژگیهای دادههای موجود را از آن استخراج میکنیم. مهندسی ویژگیها دادههای عددی معمولاً دادهها را به شکل ارزشهای اسکالِر نشان میدهند که مشاهدات، ضبط دادهها یا اندازه گیری آنها را نشان میدهد. منظور ما در اینجا دادههای عددی به عنوان دادههای مستمر است نه گُسَسته که به طور معمول به عنوان اطلاعات طبقه بندی شده ارائه میشوند. دادههای عددی میتوانند به عنوان یک بُردار از مقادیر نشان داده شود که هر مقدار یا موجودیت بُردار میتواند خود یک ویژگی خاص را نشان دهد. عدد صحیح (Integer) و شناور (Float) رایج ترین و به طور گستردهای از انواع دادههای عددی برای دادههای عددی مُداوم استفاده میشوند. حتی داده های عددی میتوانند به طور مستقیم به مُدل های یاد گیری ماشین انتقال یابند. شما برای هر یک از سِناریوهای مربوطه نیاز به ویژگیهایِ مهندسی دارید که مربوط به مشکلات و حوزهی مرتبط با آنها برای ساخت یک مُدل است. از این رو، نیاز به مهندسی ویژگیها هنوز هم در جای خود باقی است.