این بسته به آموزش GEP به صورت عمیق و همچنین آموزش GeneXproTools برای پیاده سازی این روش میپردازد. GEP یا برنامه سازی بیان ژنی در واقع نسل سوم از الگوریتم های ژنتیک است. ما از مبانی زیستی شروع میکنیم. سپس به آموزش الگوریتم ژنتیک به طور کلی و شاخههای آن میپردازیم. سپس آموزش الگوریتم GEP و سرانجام پیاده سازی آن با یک مثال واقعی شرح داده میشود.
پیش از این آموزش Streamlit در همرویش منتشر شد. برای دیدن فیلم معرفی این آموزش بر روی این لینک (+) و یا پخش کننده پایین کلیک کنید:
برای دریافت بسته آموزشی بر روی لینک زیر کلیک کنید:
آموزش Streamlit —- ساخت وب اپلیکیشن هوش مصنوعی با پایتون
درباره الگوریتم GEP
الگوریتم GEP یا برنامهسازی بیان-ژنی (Gene Expression Programming) روشی برای توسعه برنامههای کامپیوتری و مدلسازی ریاضیاتی بر اساس محاسبات تکاملی و با الهام از تکامل طبیعی است. این روش توسط خانم Ferreira در سال ۱۹۹۹ ابداع و به طور رسمی در سال ۲۰۰۱ معرفی شد (Ferreira, 2001).
الگوریتم GEP در حقیقت نگاه حاکم بر دو الگوریتم وراثتی پیش از خود را در راستای پوشش نقاط ضعف این دو، تجمیع میکند. در این روش، ژنوتایپ کروموزومها مشابه الگوریتم ژنتیک (Genetic Algorithm) یک ساختار خطی دارد؛ و فنوتایپ این کروموزومها به صورت یک ساختار درختی با طول و اندازه متغیر مشابه الگوریتم برنامهسازی ژنتیک (Genetic Programming) است.
از این رو الگوریتم GEP با غلبه بر محدودیت نقش دوگانه کروموزومها در الگوریتمهای پیش از خود امکان اعمال عملگرهای متعدد ژنتیک را با ضمانت سلامت همیشگی کروموزومهای فرزند فراهم میسازد. و با سرعتی بیش از GP به دلیل تنوع ساختاری بالاتر از GA، فضای پاسخهای ممکن را به صورت کاملتری جستجو میکند.
در حقیقت GEP از این منظر موفق به عبور از آستانههای اول و دوم مفروض در فرآیندهای تکامل طبیعی (Replicator Threshhold and Phenotype Threshold) شده است. شرح بیشتر در این مقاله (+) از همین مدرس.
آموزش GEP در یک نگاه
نخست به بیان مفاهیم بهینه سازی (Optimization) و جایگاه الگوریتمهای ابتکاری (Heuristic Algorithm) در آن میپردازیم. سپس مقدمهای به محاسبات تکاملی (ٍEvolutionary computation) و به ویژه الگوریتم های وراثتی (Genetic Algorithms) خواهیم داشت.
مفاهیم بنیادی الگوریتم ژنتیک و الگوریتم برنامه سازی ژنتیک شرح داده میشوند. سپس به نقطهای میرسیم که نیاز به الگوریتم GEP احساس شده است.
آنگاه در یک درس به صورت مفصل و بسیار عمیق به کشف الگوریتم GEP حل مثالهایی از مقالههای مرجع میپردازیم. در درس بعد منابعی به شما معرفی میکنیم که بتوانید از آنها برای دریافت مقالههای بیشتر و نمونه کدهای آماده به زبانهای برنامه نویسی مختلف استفاده کنید.
سرانجام در درس پایانی به شرح یک مثال تابع یابی با هوش مصنوعی و آموزش GEP برای حل آن میپردازیم.
گام به گام به آموزش GeneXproTools میپردازیم. این نرم افزار توسط خود ابداع کننده روش و تیم همکارانشان برای اجرای GEP توسعه یافته است. دانلود رایگان GeneXproTools و البته قانونی آن را فرامیگیرید.
گذشته از اجرای GEP در این نرم افزار به شما توصیه میکنیم که با آموزش یک زبان برنامه نویسی مثل پایتون به پیاده سازی این الگوریتم در برنامهها و اسکریپتهای اختصاصی اقدام کنید. به این منظور میتوانید به آموزش پایتون (+) در هم رویش مراجعه کنید.
برای بررسی ریز مطالب این آموزش به سرفصل مطالب در ادامه مراجعه نمایید.
کلیدواژگان
آموزش gep | آموزش gene expression programming | انواع الگوریتم ژنتیک | الگوریتم های وراثتی | آموزش genetic programming | الگوریتم بیان ژنی چیست | آموزش فارسی انواع الگوریتم وراثتی از صفر | دانلود GeneXproTools | آموزش GeneXproTools
mirseifi (خریدار محصول) –
سلام و عرض ادب
دو هفته قبل ویدیوی GEP را خریداری کردم و بسیار مفید بود. امکان دارد کتابی در خصوص GEP معرفی بفرمایید؟ لطفا هم منبع فارسی و هم انگلیسی معرفی بفرمایید.
بی نهایت سپاسگزارم
مصطفی آصفی –
سلام به شما. سلامت باشید. بهترین منبع برای ادامه کارتون (گمانم تو خود آموزش هم اشاره کردم) کتاب ابداع کننده روش خانم Candida Ferreira هست:
Gene Expression Programming: Mathematical Modeling by an Artificial Intelligence
این رو برای درک پایه خوبه بخونید. کتاب پایین هم جنبه پیاده سازی داره و تازه تره. من نخوندمش ولی الگوریتم های مختلف از جنبه برنامه سازی بیان ژنی رو پوشش داره. با توجه به امتیاز مناسبی که داره سرفصل اون بخش بیان ژنی و سیر کتاب رو تو پیش نمایش آمازون بررسی کنید ممکنه مناسبتون باشه:
The Nonlinear Workbook: Chaos, Fractals, Cellular Automata, Genetic Algorithms, Gene Expression Programming
کتاب فارسی راستش بنده اطلاع ندارم و تا جایی که الان گوگل بهم نشون میده جز آموزش بنده که تو هم رویش و زمینو گذاشته شده منبع دیگه ای برای آموزش نیست. امیدوارم بیشتر کار بشه و صرفا برای مقاله استفاده نشه.
سعید صدرا –
با سلام مجدد
با تشکر از پاسخگویی جنابعالی
ببخشید، این کد ها را بنده قبلا دیدم.
منظورم نمونه صفر تا صد کد GEP برای پیش بینی سری زمانی هست به زبان برنامه نویسی MATLAB است.
((با افزودن py می توانید مستقیماً از MATLAB به کتابخانه های پایتون دسترسی پیدا کنید.)) یعنی به کجاها و به چه صورت؟
چون می خواهم پیش پردازش روی داده های انجام بدم.
مصطفی آصفی –
سلام به شما. این نمونه فیلم فراخوانی پایتون در متلب (+) و موارد بیشتر در یوتیوب رو ببینید.
سعید صدرا –
باسلام و احترام
وقت بخیر
کد متلب MATLAB روش GEP هم قابل اجرا هست? که برای پیش بینی سری زمانی استفاده شود.
اگر امکان دارد کدهای حرفهای آماده MATLAB در سایت قرار بدید.
مصطفی آصفی –
سلام به شما. منظورتون خروجی رابطه نهایی به زبان متلب هست؟ بله مشکلی نداره.
اگرم منظورتون سورس کد پیاده سازی روش GEP در متلب هست توصیه می کنم این نمونه (+) رو ببینید.
ضمنا شما میتونید مطابق این راهنمای Python in Matlab (+) از سورسهای پایتونی هم در متلب استفاده کنید. برای مثال این کتابخانه GEP به زبان پایتون (+) رو میشه نام برد که از سالهای پیش تا امروز در حال توسعه و روزآمدی هست و میشه گفت فعاله.
ایدا –
سلام استاد خسته نباشید
ببخشید من یه سری داده دارم.داده های من نقصان دارند و میخواهم نقصان داده هامو رفع کنم آیا این آموزش برای من مفید هست؟
مصطفی آصفی –
سلام به شما. منظورتون اینه که تعدادی داده مصنوعی ایجاد کنید؟ اگه این طوره بله احتمالا می تونید از GEP برای پیش بینی رابطه ای نزدیک بین ورودی ها و خروجی ها پیدا کنید و بعد با دادن تعدادی ورودی در بازه ورودی های موجود تعدادی خروجی جدید تعیین کنید.
mahla.ahmadpoor@gmail.com –
سلام وقتتون بخیر
آیا میشه gep رو یک شبکه عصبی دونست؟ اگر نه چه طور میشه به رابطه ی ریاضی بین پارامترهای ورودی و خروجی به وسیله شبکه عصبی برسیم؟ ممنون میشم اگر پاسخ بدین.
مصطفی آصفی –
سلام به شما. خیر ببینید روش gep با روش کار شبکه های عصبی متفاوته. البته شما همون طور که با شبکه عصبی می تونید رابطه بین ورودی ها و خروجی ها رو به دست بیارین (نه به صورت یک فرمول ریاضی بلکه به صورت یک شبکه تعلیم یافته) در اینجا هم در مورد جپ می تونید چنین کاری کنید (اینجا یه رابطه به دست میارین)
نکته دیگه این که با GEP میشه رابطه ریاضی معادل یک شبکه عصبی تعلیم یافته رو هم کشف کرد. این چیزیه که خیلی جذابه. چون یادگیری در شبکه های عصبی خیلی اصولی انجام میشه اما فرمولی به ما نمیده.
پی نوشت: توصیه می کنم شما اول این آموزش GEP رو ببینید و اون سریال آموزش های رایگان شبکه عصبی از صفر هم که تو آپارات و اینستاگرام هم رویش از بنده منتشر می کنن رو هم با دقت ببینید تا توضیح بنده براتون واضح تر باشه. دیدن هر دوی این ها نهایتا یک روز از شما زمان می بره.
zahradashti68@gmail.com (خریدار محصول) –
سلام ، استاد آصفی بابت تدریس خوبتون تشکر می کنم، سوالی که برای من پیش اومده این هست که برای اموزش مدل تعداد داده ها تو چه رنجی باشه روش gep جواب مناسبی به ما میده؟ تعداد داده های من 70 تا هست میخوام بدونم با این 70 تا داده میتونم از این روش استفاده کنم و تابع مورد نظرم پیدا کنم؟ سوال دیگه هم که دارم اینه اگه ما دوتا خروجی داشته باشیم از کدام بخش نرم افزار میشه این تعریف که مثلا ستون های x و y اکسلی که اد شده به نرم افزار ورودی نیستند و خروجی هستند؟
مصطفی آصفی –
سلام و ممنون از لطف شما.
ببینید در روش های ابتکاری معمولا قاعده دقیقی نداریم. تعداد داده های مورد نیاز برای تعلیم خیلی به ماهیت داده های شما بستگی داره. این که چقدر گوناگونی دارید؟ چند متغیر دخیل هستند؟ متغیرها چقدر با هم در تعارض یا همراهی هستند؟
شما اول باید به صورت شهودی یک دیدی نسبت به داده های خودتون پیدا کنید. باید مطمئن بشید که واقعا یک رابطه ای برقرار هست. و این که واقعا جامعه داده هایی که استفاده می کنید از نظر حجم، مساله رو به صورت جامع گویای وضعیت های مختلف مساله باشه یا نه. ممکنه در یک مساله که متغیرها تقابل منظمی با هم دارن، 70 داده کافی باشه ولی در یک مساله خیر.
بعد از شناخت از داده های خودتون باید به سراغ پیشنهادها و توصیه های تجربی محققان همین حوزه برید. مقاله های گوناگون از کاربرد GEP رو از ساینس دایرکت و پایگاه های علمی دیگه دریافت کنید و ببینید با توجه به نوع مساله ها، چه تعداد داده و چه توابعی و چه پیشنهادهایی برای بهینه سازی روش ارائه کردن. خود وبسایت GEP هم چندین مقاله خوب رو معرفی کرده.
در مورد کاربری نرم افزار دقت کنید که ما فقط یک پرش سریع به نرم افزار داشتیم صرفا برای معرفی یک ابزار اجرای سریع الگوریتم. برای کاربری حرفه ای باید مستندات نسخه به روز نرم افزار رو حتما بررسی کنید. مثلا فراخوانی داده ها در GeneXProTools رو ببینید.
نسخه 5 نرم افزار هم تغییرات زیادی داشته. لطفا این نشانی رو بررسی کنید.
ضمنا بد نیست بدونید که شما GEP رو با کتابخونه های پایتون هم می تونید به صورت دستی کدنویسی و اجرا کنید. پایین تر یک نمونه رو به دوستتون معرفی کردم. برای کاربردهای حرفه ای با توجه به بهادار بودن نرم افزار و همین طور برای این که بهتر قلب کارتون رو بتونید تحلیل کنید، توصیه می کنم حتما این موضوع رو تو ذهن داشته باشین.
سروش –
سلام و عرض ادب،
میخواستم بدونم امکان داره آموزش GEP با استفاده از پایتون را داشته باشیم ؟
مصطفی آصفی –
سلام به شما. بعد از دیدن این آموزش که خوب با مفهوم GEP آشنا شدید میتونید از کتابخانه geppy برای اجرای Gep با پایتون (یا موارد مشابه دیگه) استفاده کنید.
محسن –
با سلام
چرا از برنامه سازی بیان ژنی به جای برنامه نویسی بیان ژنی استفاده میکنید؟ لطفا دلیلش را توضیح بدید
مصطفی آصفی –
سلام به شما. به دلیل این که در این روش براساس یک سیر تکاملی (شبیه تکامل طبیعی) یک برنامه ساخته میشه. ما در واقع این برنامه رو نمی نویسیم. این برنامه به تکامل تدریجی ساخته میشه. در واقع اون برنامه ای که ساخته میشه یک رابطه بین چند متغیر رو بیان میکنه.
آموزش رو ببینید بهتر متوجه میشید.
Niloofat –
سلام وقتتون بخیر سوالم ازتون اینه که من دانشجو رشته کشاورزی هستم و برای شبیه سازی داده های تبخیر با استفاده از این نرم افزار اموزشی در این مورد در این بسته آموزشی ذکر شده است ؟؟ممنون میشم جواب منو بدین
مصطفی آصفی –
سلام به شما. ببینید ما در این آموزش خود روش رو توضیح دادم. یک روشی که بر پایه محاسبات ابتکاری می تونه رابطه (تابع) بین چند پارامتر ورودی و خروجی رو به دست بیاره. اما این که شمای محقق در چه زمینه ای مساله رو تعریف می کنی و این که آیا واقعا مساله تعریف شده حاکی از وجود ارتباط بین داده ها باشه که بشه این ارتباط رو به صورت یک تابع استخراج کرد این این مرتبط با تخصص خود شمای محقق هست.
پینوشت: دقت کنید که روش GEP روشی برای شبیه سازی نیست. یک روش مدلسازی ریاضی هست. فیلم معرفی و توضیحات رو لطفا با دقت بررسی بفرمایید.
rez –
سلام و درود
استاد یه سوال
بعد از این دوره چه کار هایی میتونیم انجام بدیم
یعنی کاربردش مثلا برای منی که پایتون کار هستم چیه؟
مصطفی آصفی –
سلام به شما. روش برنامه سازی بیان ژنی یا GEP یکی از روشهای محاسباتی نرم هست که می تونه به یادگیری ماشین به صورتی منعف مثل انسان در مواجه با پدیده های پیرامونش کمک کنه. این روش مختص یک دسته خاص از مهندسان یا برنامه نویسان نیست. شما به اقتضای شرایط ممکنه در مغز یک سیستم هوشمند از این الگوریتم استفاده کنید. ممکنه به عنوان یک برنامه نویس پایتون در قلب یک وبسایت یا اپ خودتون یک جایی که می خواید رفتاری رو پیش بینی یا مدلسازی کنید از اون استفاده کنید. مثالی بزنم:
فرض کنید شما مدام در حال رصد رفتار مشتری سایت خودتون هستید: در چه فصلی اومد؟ چه زمانی از روز بود؟ همراه این محصول چه صفحه های دیگه ای رو دید؟ آیا بعد از خرید نظر داد؟ آیا طرح تخفیف در جریان بود؟ و بعد از همه این سوالات در نهایت چه چیزی رو خرید؟ چیزی که خرید متعلق به چه دسته ای بود؟ و همه این دست داده ها رو تو دیتابیس خودتون ثبت می کنید. بر پایه این داده ها و الگوریتمی مثل GEP می تونید تابعی پیدا کنید که نوع خرید مخاطب رو به شرایط دیگه مرتبط کنه (یعنی وقتی چنین اطلاعاتی رو بهش بدین بگه که مثلا کدوم دسته از مخاطبا احتمالا این محصول رو می خرن). بعد در سایت خودتون کدی بنویسید که همیشه این روش رو برای محصولات تازه منتشر شده اجرا کنه و تعیین کنه که احتمالا بر اساس فصل انتشار و باقی پارامترها، انتشار این محصول رو به چه کسانی به صورت ایمیلی اطلاع بده و حتی براشون طرح تخفیف در نظر بگیره. این یعنی یک سیستم هوشمند مدیریت مشتری.
روشهای محاسبات نرم مثل این یا شبکه های عصبی یا محاسبات فازی در کل یادگیری ماشین یا کدنویسی هوشمند استفاده میشن.
امید (خریدار محصول) –
سلام مجدد استاد گرامی
من دفعه قبل هم پرسیدم اما ظاهرا جواب قاطعی در مورد محدودیت های این نرم افزار که آموزش دادید وجود نداره!
محدودیت اصلی نسخه Trial یا نسخه دمو این هست که با دادن مثلا 150 داده در قسمت ورود داده ها چه به صورت اکسل چه به صورت Text ، نرم افزار دمو تنها حدود دو سوم یعنی 100 داده را از ردیف های را وارد می کند، اینو در فیلم آموزشی هم که از شما خریدم مشاهده کردم و در فیلم شما هم از تعداد داده های زیادی که دادید نرم افزار پیغام داد که تنها 70 ردیف را خوانده است.
من فکر می کنم اگر آموزش نرم افزار در ایران در سایتی قرار می دهیم بهتره همیشه نحوه درسترسی به نسخه کامل را توضیح دهیم
نرم افزاری که نسخه آموزشی آکادمیک آن حداقل 500 دلار و حداکثر 8000 دلار در سایت قیمت خورده و اون هم با لایسنس یکساله و باز باید هزینه کرد داشته باشه
داخل کشور ما ارزش یادگیری نداره، بهتره آموزش کد نویسی GEP را با زبان متلب آموزش بدهیم تا لااقل قابل استفاده شود!
موفق باشید
مصطفی آصفی –
سلام و سپاس از این که برای انتقال تجربه خودتون وقت گذاشتین. دقت بفرمایید که هدف اصلی این دوره آموزش یک نرم افزار نیست بلکه درک الگوریتم GEP هست. تا محققین هنگام استفاده از این الگوریتم درک درستی داشته باشن.
معرفی نرم افزار GeneXproTools در بخش پایانی فیلم فقط با این هدف هست که ابزاری ساده و بدون نیاز به دانش برنامه نویسی در اختیار محققین باشه برای آزمایش رفتار الگوریتم.
در رابطه با پیشنهاد آموزش کدنویسی این الگوریتم یادداشت کردم ولی کتابخانههای کد آمادهای (به زبانهای برنامهنویسی مختلف) توسط برنامهنویسان خبره برای اجرای GEP موجود هست که میتونید به عوض کدنویسی آماتور از این کدهای حرفهای استفاده کنید. مواردی در فیلم اشاره شد.
امید (خریدار محصول) –
سلام استاد گرامی
چطور میتونیم به نرم افزار دسترسی پیدا کنیم ؟
چون عدم دسترسی ما به کرک یا اصل نرم افزار باعث میشه دیگه آموزش دیدن یک کار بیم معنی تلقی بشه
مثلا من 150 تا داده دارم سه مدل رگرسیون میخوام ازشون تهیه کنم، نسخه trial نمیونه
مصطفی آصفی –
سلام دوست عزیزم. خیر متاسفانه بنده نسخه کرک شده ندارم.
نسخه دمو تا جایی که خاطرم هست محدودیت اجرا نداره؛ محدودیت زمانی داره. از سیستم تازه میشه استفاده کرد.
امیر محمد کهنگی –
سلام استاد آصفی.
سوالی داشتم درباره ی شروع این آموزش. برای یادگیری و استفاده از این آموزش باید برنامه نویسی را در چه اندازه ای آموخته باشیم و اینکه بعد از پایان یادگیری، آن را باید در چه زمینه هایی استفاده کنیم؟
مصطفی آصفی –
سلام به شما، برای این آموزش نیازی به دانش برنامه نویسی نیست.
کاربرد این الگوریتم برای الگویابی در پدیدههای پیچیده است.