نحوه تنظیم خودکار مدل با HyperOpt
آیا عاشق مدل های تیونینگ هستید؟ اگر پاسخ شما "بله" است، این پست است نه برای شما.
در این وبلاگ ما الگوریتم بسیار محبوب تنظیم هایپرپارامتر خودکار به نام را پوشش خواهیم داد برآوردگرهای Parzen مبتنی بر درخت (TPE). TPE توسط بسته منبع باز HyperOpt پشتیبانی می شود. با استفاده از HyperOpt و TPE، مهندسان یادگیری ماشین می توانند به سرعت مدل های بسیار بهینه شده را بدون هیچ گونه تنظیم دستی توسعه دهید.
بدون هیچ گونه بحث بیشتر ، بیایید شیرجه بزنیم!
HyperOpt یک بسته پایتون منبع باز است که از الگوریتمی به نام Tree-based Parzen Esimtors (TPE) برای انتخاب ابرپارامترهای مدل استفاده می کند که یک تابع هدف تعریف شده توسط کاربر را بهینه می کند. با تعریف ساده شکل عملکردی و مرزهای هر هایپرپارامتر، TPE به طور کامل و در عین حال کارآمدی در ابرفضای پیچیده برای رسیدن به بهینه ها جستجو می کند.
TPE یک الگوریتم ترتیبی است که از به روز رسانی بیزی استفاده می کند و دنباله زیر را دنبال می کند.
- مدلی را با چندین مجموعه از فراپارامترهای انتخاب شده تصادفی آموزش دهید که مقادیر تابع هدف را برمی گرداند.
- مقادیر تابع هدف مشاهده شده خود را بر اساس برخی از گامای آستانه (γ) به گروه های "خوب" و "بد" تقسیم کنید.
- امتیاز "امیدبخش بودن" را محاسبه کنید که درست است P(x|خوب) / P(x|بد).
- فراپارامترهایی را که امیدبخشی را از طریق مدلهای مخلوط به حداکثر میرسانند، تعیین کنید.
- مدل ما را با استفاده از فراپارامترهای مرحله 4 برازش دهید.
- مراحل 2 تا 5 را تا زمانی که یک معیار توقف تکرار کنید.
در اینجا یک نمونه کد سریع.
خوب خیلی حرف بزرگی بود بیایید سرعت خود را کم کنیم و واقعاً بفهمیم که چه خبر است.
1.1 - هدف ما
دانشمندان داده مشغول هستند. ما می خواهیم مدل های واقعا خوبی تولید کنیم، اما این کار را به شیوه ای کارآمد و ایده آل انجام دهیم.
با این حال، مراحل خاصی در چرخه عمر مدل سازی ML به طور خودکار بسیار دشوار است. به عنوان مثال، تجزیه و تحلیل داده های اکتشافی (EDA) و مهندسی ویژگی، معمولاً موضوعی خاص هستند و به شهود انسانی نیاز دارند. از سوی دیگر، تنظیم مدل یک فرآیند تکراری است که در آن رایانهها میتوانند برتر باشند.
هدف ما در سراسر این پست درک چگونگی استفاده از الگوریتمها برای خودکارسازی فرآیند تنظیم مدل است.
برای کمک به ما در مورد آن هدف فکر کنیم، بیایید از یک قیاس استفاده کنیم: ما دزدان دریایی به دنبال گنج دفن شده هستیم. همچنین مهم است که توجه داشته باشید که ما دزدان دریایی بسیار کارآمدی هستیم که به دنبال به حداقل رساندن زمان جستجوی گنج مدفون هستیم. بنابراین، چگونه باید زمان صرف شده برای جستجو را به حداقل برسانیم؟ پاسخ این است از نقشه استفاده کن
در شکل 1، ما یک نقشه ساختگی داریم که نشان می دهد گنج ما در کجا قرار دارد. پس از کوهنوردی و حفاری زیاد، رسیدن به آن گنج کار چندان سختی نخواهد بود زیرا دقیقاً می دانیم که در کجا قرار دارد.
اما وقتی نقشه نداریم چه اتفاقی می افتد؟
هنگامی که وظیفه تنظیم یک مدل را داریم، متاسفانه نقشه ای به ما داده نمی شود. زمین ما، که مربوط به فضای جستجوی hyperparmeter است، ناشناخته است. علاوه بر این، مکان گنج ما، که با مجموعه بهینه ابرپارامترها مطابقت دارد، نیز ناشناخته است.
با این تنظیمات، بیایید در مورد برخی از راههای بالقوه برای کشف مؤثر این فضا و یافتن گنج صحبت کنیم!
1.2 - راه حل های بالقوه
روش اصلی برای تنظیم مدل "دستی" است - مهندس در واقع پیکربندی های مختلف را به صورت دستی آزمایش می کند و می بیند که کدام ترکیب ابرپارامتر بهترین مدل را تولید می کند. در حالی که این فرآیند آموزنده است، ناکارآمد است. باید راه بهتری وجود داشته باشد…
1.2.1 - جستجوی شبکه (بدترین)
اولین الگوریتم بهینه سازی ما جستجوی شبکه ای است. جستجوی شبکه ای به طور مکرر تمام ترکیبات ممکن از فراپارامترها را در یک شبکه مشخص شده توسط کاربر آزمایش می کند.
به عنوان مثال، در شکل 2، هر کجا که یک نقطه قرمز می بینید، جایی است که مدل خود را مجددا آموزش می دهیم و ارزیابی می کنیم. این چارچوب ناکارآمد است زیرا آن را دارد از هایپرپارامترهای بد استفاده مجدد می کند. به عنوان مثال، اگر هایپرپارامتر 2 تأثیر کمی بر تابع هدف ما داشته باشد، ما همچنان تمام ترکیبات مقادیر آن را آزمایش می کنیم، بنابراین تعداد تکرارهای مورد نیاز را 10 برابر افزایش می دهیم (در این مثال).
اما قبل از حرکت، مهم است که توجه داشته باشید که جستجوی شبکه هنوز هم محبوبیت زیادی دارد، زیرا تضمین میشود که یک شبکه بهینه را پیدا کند. اگر تصمیم به استفاده از روش دارید، اطمینان حاصل کنید که شبکه خود را طوری تبدیل کرده اید که شکل عملکردی فراپارامترهای شما را منعکس کند. به عنوان مثال، max_depth برای a طبقه بندی جنگل تصادفی یک عدد صحیح است - اجازه ندهید که در یک فضای پیوسته جستجو کند. همچنین بعید است که توزیع یکنواختی داشته باشد - اگر شکل عملکردی هایپرپارامتر خود را می دانید، شبکه را تغییر دهید تا آن را منعکس کند.
به طور خلاصه جستجوی شبکه ای در معرض نفرین ابعاد قرار دارد و اطلاعات را بین ارزیابی ها مجدداً محاسبه می کند، اما همچنان به طور گسترده مورد استفاده قرار می گیرد.
1.2.2 - جستجوی تصادفی (خوب)
الگوریتم دوم ما جستجوی تصادفی است. جستجوی تصادفی مقادیر تصادفی را در یک شبکه مشخص شده توسط کاربر امتحان می کند. برخلاف جستجوی شبکهای، ما به آزمایش هر ترکیب ممکن از فراپارامترها که کارایی را افزایش میدهد، تنزل نمیدهیم.
در اینجا یک واقعیت جالب وجود دارد: جستجوی تصادفی (به طور متوسط) یک پیکربندی فراپارامتر برتر 5٪ را در داخل پیدا می کند. 60 تکرار. همانطور که با جستجوی شبکه ای، باید فضای جستجوی خود را تغییر دهید تا شکل عملکردی هر هایپرپارام را منعکس کند.
جستجوی تصادفی پایه خوبی برای بهینه سازی هایپرپارامتر است.
1.2.3 - بهینه سازی بیزی (بهتر)
نامزد سوم ما اولین الگوریتم بهینه سازی مبتنی بر مدل متوالی (SMBO) ما است. تفاوت مفهومی کلیدی با تکنیک های قبلی ما است به طور مکرر از اجراهای قبلی برای تعیین نقاط اکتشاف آینده استفاده کنید.
بهینهسازی فراپارامتر بیزی به دنبال ایجاد توزیع احتمالی فضای جستجوی فراپارامتر ما است. از آنجا، از یک تابع اکتساب، مانند بهبود مورد انتظار، استفاده میکند تا فضای فرافضای ما را به «قابل جستجوتر» تبدیل کند. در نهایت، از یک الگوریتم بهینهسازی، مانند نزول گرادیان تصادفی، برای یافتن فراپارامترهایی که تابع اکتساب ما را به حداکثر میرسانند، استفاده میکند. از آن فراپارامترها برای برازش مدل ما استفاده می شود و این فرآیند تا زمان همگرایی تکرار می شود.
بهینهسازی بیزی معمولاً از جستجوی تصادفی بهتر عمل میکند، با این حال دارای محدودیتهای اصلی مانند نیاز به فراپارامترهای عددی است.
1.2.4 - برآوردگرهای Parzen مبتنی بر درخت (بهترین)
در نهایت، بیایید در مورد ستاره نمایش صحبت کنیم: تخمین زن های پرزن مبتنی بر درخت (TPE). TPE یکی دیگر از الگوریتمهای SMBO است که معمولاً از بهینهسازی پایه بیزی بهتر عمل میکند، اما نقطه فروش اصلی این است که روابط پیچیده فراپارامتر را از طریق یک ساختار درختی مدیریت میکند.
برای درک این موضوع از شکل 5 استفاده می کنیم ساختار درختی. در اینجا ما یک طبقهبندیکننده ماشین بردار پشتیبانی (SVM) را آموزش میدهیم. ما دو هسته را آزمایش خواهیم کرد: linear
و RBF
. linear
کرنل پارامتر عرض را نمی گیرد اما RBF
بنابراین با استفاده از یک فرهنگ لغت تو در تو می توانیم این ساختار را رمزگذاری کنیم و در نتیجه فضای جستجو را محدود کنیم.
TPE همچنین از متغیرهای طبقهبندی پشتیبانی میکند که بهینهسازی سنتی بیزی از آن پشتیبانی نمیکند.
سلب مسئولیت سریع قبل از حرکت، وجود دارد بسیاری از بسته های تنظیم هایپرپارامتر دیگر. هر کدام از الگوریتمهای مختلفی پشتیبانی میکنند که برخی از آنها شامل جنگلهای تصادفی، فرآیندهای گاوسی و الگوریتمهای ژنتیک هستند. TPE یک الگوریتم بسیار محبوب و همه منظوره است، اما لزوما بهترین نیست.
به طور کلی، TPE یک راه حل بهینه سازی هایپرپارامتر واقعا قوی و کارآمد است.
اکنون که درک کلی از برخی از الگوریتمهای بهینهسازی هایپرپارامتر محبوب داریم، بیایید به نحوه عملکرد TPE بپردازیم.
برگردیم به قیاس خود، ما دزدان دریایی به دنبال گنج مدفون هستیم اما نقشه ندارید. کاپیتان ما در اسرع وقت به گنج نیاز دارد، بنابراین ما باید در مکان های استراتژیک که احتمال زیادی برای داشتن گنج دارند، حفاری کنیم و از حفاری های قبلی برای تعیین مکان حفاری های آینده استفاده کنیم.
2.1 - اولیه سازی
برای شروع، ما محدودیت های فضای ما را تعریف کنید. همانطور که در بالا ذکر شد، هایپرپارامترهای ما اغلب یک شکل عملکردی، مقادیر حداکثر/دقیقه و رابطه سلسله مراتبی با سایر فراپارامترها دارند. با استفاده از دانش خود در مورد الگوریتم های ML و داده های خود، می توانیم فضای جستجوی خود را تعریف کنیم.
بعد، ما باید تابع هدف ما را تعریف کنیم، که برای ارزیابی میزان "خوب" ترکیب هایپرپارامتر ما استفاده می شود. برخی از نمونه ها شامل توابع از دست دادن ML کلاسیک، مانند RMSE یا AUC هستند.
عالی! اکنون که فضای جستجوی محدود و راهی برای سنجش موفقیت داریم، آماده شروع جستجو هستیم…
2.2 - بهینه سازی بیزی تکراری
بهینه سازی بیزی یک الگوریتم متوالی است که نقاطی را در ابرفضا با احتمال "موفقیت" بالا بر اساس یک تابع هدف پیدا می کند. TPE از بهینه سازی بیزی استفاده می کند اما از برخی ترفندهای هوشمندانه برای بهبود عملکرد و مدیریت پیچیدگی فضای جستجو استفاده می کند.
2.2.0 - تنظیم مفهومی
اولین ترفند مدلینگ است P(x|y) بجای P(y|x)…
بهینه سازی بیزی معمولاً به دنبال مدل سازی است P(y|x)، که احتمال یک مقدار تابع هدف است (yبا توجه به فراپارامترها (x). TPE برعکس عمل می کند - به نظر می رسد مدل سازی شود P(x|y)، که احتمال فراپارامترها (x), با توجه به مقدار تابع هدف (y).
به طور خلاصه، TPE سعی می کند بهترین مقادیر تابع هدف را پیدا کند، سپس فراپارامترهای مرتبط را تعیین کند.
با این تنظیمات بسیار مهم، بیایید وارد الگوریتم واقعی شویم.
2.2.1 - داده های خود را به گروه های "خوب" و "بد" تقسیم کنید
به یاد داشته باشید، هدف ما یافتن بهترین مقادیر فراپارامتر با توجه به برخی تابع هدف است. بنابراین، چگونه می توانیم از اهرم استفاده کنیم P(x|y) برای انجام آن؟
ابتدا، TPE نقاط داده مشاهده شده ما را به دو گروه تقسیم می کند: خوب، نشان داده شده است g(x) و بد، نشان داده شده است l(x). برش بین خوب و بد توسط یک پارامتر گامای تعریف شده توسط کاربر (γ) تعیین می شود، که مربوط به صدک تابع هدف است که مشاهدات ما را تقسیم می کند.y*).
بنابراین، با γ = 0.5، مقدار تابع هدف ما که مشاهدات ما را تقسیم می کند (y*) میانه نقاط مشاهده شده ما خواهد بود.
همانطور که در شکل 7 نشان داده شده است، می توانیم رسمی کنیم p(x|y) با استفاده از چارچوب فوق و با تشبیه دزدان دریایی...
دیدگاه دزدان دریایی: با نگاهی به مکانهایی که قبلاً کاوش کردهایم، l(x) مکانهایی را فهرست میکند که گنج بسیار کمی دارند و g(x) مکانهایی را با گنجهای فراوان فهرست میکند.
2.2.32- امتیاز "امیدبخشی" را محاسبه کنید
دوم، TPE تعریف می کند که چگونه باید یک ترکیب فراپارامتر مشاهده نشده را از طریق the ارزیابی کنیم امتیاز "امیدبخش"..
شکل 8 امتیاز امیدواری ما را تعریف می کند (P) که فقط یک نسبت با اجزای زیر است…
- صورت کسر: احتمال مشاهده مجموعه ای از فراپارامترها (xبا توجه به مقدار تابع هدف مربوطه "خوب"
- مخرج: احتمال مشاهده مجموعه ای از فراپارامترها (xبا توجه به مقدار تابع هدف مربوطه "بد"
هر چه مقدار "امیدبخش" بزرگتر باشد، احتمال اینکه فراپارامترهای ما بیشتر باشد x تابع هدف "خوب" تولید خواهد کرد.
دیدگاه دزدان دریایی: امیدواری نشان می دهد که یک مکان مشخص در زمین ما چقدر احتمال دارد که گنج های زیادی داشته باشد.
اگر با بهینه سازی بیزی آشنایی دارید، این معادله به عنوان یک تابع اکتساب عمل می کند و متناسب با بهبود مورد انتظار (EI).
2.2.3- یک تخمین چگالی احتمال ایجاد کنید
سوم، TPE به دنبال ارزیابی امتیاز «امیدبخش» از طریق آن است مدل های مخلوط. ایده مدلهای مخلوط این است که توزیعهای احتمال چندگانه را گرفته و آنها را با استفاده از یک ترکیب خطی کنار هم قرار دهند. ". سپس از این توزیعهای احتمال ترکیبی برای توسعه تخمینهای چگالی احتمال استفاده میشود.
به طور کلی، فرآیند مدل سازی مخلوط…
- نوع توزیع امتیازهای ما را تعریف کنید. در مورد ما، اگر متغیر ما مقولهای است، از توزیع طبقهبندی مجدد وزندهی شده و اگر عددی آن از یک توزیع گاوسی (یعنی نرمال) یا یکنواخت استفاده میکنیم.
- روی هر نقطه تکرار کنید و توزیعی را در آن نقطه وارد کنید.
- جرم همه توزیع ها را جمع کنید تا یک تخمین چگالی احتمال بدست آورید.
توجه داشته باشید که این فرآیند برای هر دو مجموعه به صورت جداگانه اجرا می شود l(x) و g(x).
بیایید یک مثال در شکل 9 را مرور کنیم…
برای هر مشاهده (نقاط آبی روی محور x)، یک توزیع نرمال ~N(μ, σ) ایجاد می کنیم، که در آن…
- μ (mu) میانگین توزیع نرمال ما است. مقدار آن مکان نقطه ما در امتداد محور x است.
- σ (سیگما) انحراف معیار توزیع نرمال ما است. مقدار آن فاصله تا نزدیکترین نقطه همسایه است.
اگر نقاط نزدیک به هم باشند، انحراف معیار کوچک خواهد بود و در نتیجه توزیع بسیار بلند خواهد بود و بالعکس، اگر نقاط از هم دور باشند، توزیع مسطح خواهد بود (شکل 10).
دیدگاه دزدان دریایی: NA - دزدان دریایی با مدل های مخلوط عالی نیستند.
یک نکته سریع دیگر قبل از ادامه دادن: اگر در حال خواندن ادبیات هستید، متوجه خواهید شد که TPE از گاوس های کوتاه شده استفاده می کند، که به سادگی به این معنی است که گاوس ها به جای گسترش تا بی نهایت +/- با محدوده ای که ما در پیکربندی هایپرپارامتر خود تعیین می کنیم محدود می شوند. .
2.2.4 - تعیین نقطه بعدی برای کاوش!
بیایید این قطعات را کنار هم بیاوریم. تا کنون، ما 1) مشاهدات تابع هدف را به دست آورده ایم، 2) فرمول "امیدبخش" خود را تعریف کرده ایم، و 3) تخمین چگالی احتمال را از طریق مدل های مخلوط بر اساس مقادیر قبلی ایجاد کرده ایم. ما تمام قطعات برای ارزیابی یک نقطه داده شده را داریم!
اولین قدم ما ایجاد یک تابع چگالی احتمال متوسط (PDF) برای هر دو است g(x) و l(x).
یک فرآیند مثال در شکل 11 نشان داده شده است - خط قرمز میانگین پی دی اف ما است و به سادگی مجموع تمام فایل های PDF تقسیم بر تعداد PDF است.
با استفاده از میانگین PDF، می توانیم احتمال هر مقدار فراپارامتر را بدست آوریم (x) بودن در g(x) or l(x).
برای مثال، فرض کنید مقادیر مشاهده شده در شکل 11 به مجموعه "خوب" تعلق دارند. g(x). بر اساس میانگین PDF ما، بعید است که یک مقدار فراپارامتر 3.9 یا 0.05 متعلق به مجموعه "خوب" باشد. در مقابل، به نظر میرسد که یک مقدار فراپارامتر ~ 1.2 به نظر میرسد که به مجموعه "خوب" تعلق داشته باشد.
حالا این فقط نیمی از تصویر است. ما همان روش را برای مجموعه "بد" اعمال می کنیم، l (x). از آنجایی که ما به دنبال به حداکثر رساندن هستیم g(x) / l(x), نقاط امیدوار کننده باید در جایی واقع شوند g(x) بالا است و l(x) کم است.
خیلی سرد، درست است؟
با این توزیعهای احتمال، میتوانیم از فراپارامترهای ساختار درختی خود نمونهبرداری کنیم و مجموعهای از فراپارامترها را پیدا کنیم که «امیدبخش» را به حداکثر میرسانند و در نتیجه ارزش کاوش را دارند.
دیدگاه دزدان دریایی: مکان بعدی که حفاری می کنیم مکانی است که (احتمال داشتن گنج زیاد) / (احتمال داشتن گنج کم) را به حداکثر می رساند.
اکنون که می دانید چگونه کار می کند، در اینجا چند نکته کاربردی برای پیاده سازی TPE از طریق بسته منبع باز HyperOpt آورده شده است.
3.1 - ساختار یک برنامه HyperOpt
به طور کلی، سه مرحله اصلی هنگام استفاده از HyperOpt وجود دارد…
- فضای جستجو را تعریف کنید، که فقط محدوده ها و اشکال عملکردی هایپرپارامترهایی است که شما به دنبال بهینه سازی آن هستید.
- تابع فیتینگ را تعریف کنید، که شما را صدا می کند
model.fit()
عملکرد در یک تقسیم قطار/آزمایش مشخص. - تابع هدف را تعریف کنید، که هر یک از معیارهای دقت کلاسیک، مانند RMSE یا AUC است.
متأسفانه، این روش های تنظیم خودکار هنوز به ورودی طراحی از دانشمند داده نیاز دارند - این یک ناهار کاملاً رایگان نیست. با این حال، به طور حکایتی، TPE نسبت به تعیین نادرست هایپرپارامتر (در حد منطق) بسیار قوی است.
3.2- نکات و ترفندها
- HyperOpt از طریق هر دو قابل موازی سازی است جرقه آپاچی و MongoDB. اگر با چندین هسته کار میکنید، چه در فضای ابری یا روی دستگاه محلی خود، این میتواند زمان اجرا را بهطور چشمگیری کاهش دهد.
- اگر فرآیند تنظیم را از طریق Apache Spark موازی می کنید، از a استفاده کنید
SparkTrials
شیء برای مدل های تک گره ML (sklearn) و aTrails
شی برای مدل های ML موازی شده (MLlib). کد زیر است. - MLflow یک روش منبع باز برای ردیابی اجراهای مدل شما است. به راحتی با HyperOpt ادغام می شود.
- فضای جستجو را خیلی زود محدود نکنید. برخی از ترکیبات فراپارامترها ممکن است به طرز شگفت انگیزی موثر باشند.
- تعریف فضای جستجو می تواند مشکل باشد، به خصوص اگر شما آن را نمی دانید شکل عملکردی فراپارامترهای شما. با این حال، از تجربه شخصی TPE نسبت به تعریف نادرست آن اشکال عملکردی بسیار قوی است.
- انتخاب یک تابع هدف خوب راه درازی دارد. در بیشتر موارد، خطا برابر ایجاد نمی شود. اگر نوع خاصی از خطا مشکل سازتر است، مطمئن شوید که آن منطق را در تابع خود ایجاد کنید.
3.3- یک مثال کد
در اینجا کدی برای اجرای HyperOpt به صورت توزیع شده آورده شده است. از کد موجود در کتاب اقتباس شده است، مهندسی یادگیری ماشین در عمل - اینجاست git repo.
برخی از ویژگی های خوب این قطعه شامل موازی سازی از طریق جرقه آپاچی و ورود مدل از طریق MLflow. همچنین توجه داشته باشید که این قطعه یک sklearn RandomForestRegressor را بهینه میکند - شما باید مدل و تابع فیتینگ را متناسب با نیاز خود تغییر دهید.
و شما آن را دارید - HyperOpt با شکوه تمام!
برای بررسی نکات کلیدی امیدواریم، سریعاً مرور کنیم.
تنظیم فراپارامتر بخشی ضروری از چرخه عمر مدل ML است، اما زمان بر است. الگوریتمهای بهینهسازی مبتنی بر مدل متوالی (SMBO) در جستجوی ابرفضاهای پیچیده برای بهینهها برتری دارند و میتوانند برای تنظیم فراپارامتر اعمال شوند. برآوردگرهای Parzen مبتنی بر درخت (TPE) یک SMBO بسیار کارآمد است و از بهینه سازی بیزی و جستجوی تصادفی بهتر عمل می کند.
TPE مراحل زیر را تا یک معیار توقف تکرار می کند:
- نقاط مشاهده شده را بر اساس برخی فراپارامترها، گاما، به مجموعه های «خوب» و «بد» تقسیم کنید.
- یک مدل مخلوط را برای هر دو مجموعه "خوب" و "بد" تنظیم کنید تا یک تخمین چگالی احتمال متوسط ایجاد شود.
- نقطه ای را انتخاب کنید که امتیاز "امیدبخش" را بهینه می کند، که از مرحله 2 برای تخمین احتمال قرار گرفتن در مجموعه های "خوب" و "بد" استفاده می کند.
در نهایت، ما یک قطعه کد بسیار جالب داریم که نحوه موازی سازی HyperOpt از طریق SparkTrials را نشان می دهد. همچنین تمام تکرارهای ما را در MLflow ثبت می کند.
HyperOpt Demystified بازنشر شده از منبع https://towardsdatascience.com/hyperopt-demystified-3e14006eb6fa?source=rss—-7f60cf5620c9—4 از طریق https://towardsdatascience.com/feed
<!–
->
- بیت کوین
- bizbuildermike
- بلاکچین
- انطباق با بلاک چین
- کنفرانس بلاکچین
- مشاوران بلاک چین
- coinbase
- coingenius
- اجماع
- کنفرانس رمزنگاری
- معدنکاری رمز گشایی
- کریپتو کارنسی (رمز ارزها )
- غیر متمرکز
- DEFI
- دارایی های دیجیتال
- ethereum
- فراگیری ماشین
- رمز غیر قابل شستشو
- افلاطون
- افلاطون آی
- هوش داده افلاطون
- پلاتوبلاک چین
- PlatoData
- بازی پلاتو
- چند ضلعی
- اثبات سهام
- W3
- زفیرنت