Я всегда был любознательным человеком, пытаясь узнать о вещах, которые я в настоящее время не понимаю. Мысль о том, что я чего-то не знаю, часто выводит меня из себя. Итак, в погоне за достижением этой Шангри-Ла технических знаний я часто трачу время на изучение и чтение различных научных и исторических тем, часто тем, которые мало что привносят в мою жизнь, кроме чистого насыщения знаниями.
Так началось мое путешествие по машинному обучению (ML). ML привлек мое внимание, когда я увидел демонстрационное видео о включенном автопилоте Tesla. В этом видео никто не касался руля, и я был очарован тем, что последовательность единиц и нулей может сделать что-то подобное. Я помню, как воспроизвел видео, которое они показали, показывая несколько ограничивающих рамок, которые (как правило) правильно классифицировали объекты в кадре аналогично Yolo v5. (Я тогда не знал о Yolo, но задним числом, как говорится, 20/20).
Я начал читать о сетях машинного обучения и начал с базового персептрона. Оттуда я перешел к изучению полностью связанного слоя, а оттуда погрузился в мир обратного распространения и сверточных нейронных сетей (CNN). Как только я оказался в мире CNN, передо мной открылось целое царство возможностей, поскольку я оказался в окружении множества типов сетей, таких как ResNET, UNET, Yolo и его дочерние элементы и т. д. Мне казалось, что нет конца к обучению.
Погружение пальцев ног в машинное обучение можно сравнить с погружением пальцев ног в действительно глубокое озеро. Вода у кромки озера мелкая и дно озера хорошо видно. Однако, чем дальше вы продвигаетесь (следствие: чем больше вы разбираетесь в технике), тем больше вы понимаете, что вы слишком далеко зашли. Я не осознавал этого, когда начинал заниматься ML, но за последний год или около того я научился и вырос в своем путешествии. У меня есть несколько ключевых выводов, которые я усвоил за этот год и хотел бы знать, когда начинал.
Выводы:
- Вы никогда не перестанете учиться, если хотите успешно освоить машинное обучение. Сфера машинного обучения быстро развивается, и ежедневно выпускаются новые сети и архитектуры. Быть в курсе всего может показаться непосильным, поэтому выбирайте новые модификации и методы с умом. При этом информирование о последних событиях может быть полезным для реализации новых идей. Хорошим ресурсом является arXiv, на котором размещено множество современных статей, ежедневно публикуемых по ML. Ссылка: https://arxiv.org
- Чтобы правильно учиться, правильно создавать. Ничто так не укрепляет новую концепцию, как фактическая реализация. Я помню, как изо всех сил пытался понять концепцию обратного распространения. Только когда я создал простой полносвязный слой с созданными слоями обратного распространения, я понял, что происходит. Я не обязательно рекомендую вам создавать всю сеть с нуля, чтобы понять все, но я скажу, что нужно действительно опробовать идеи, чтобы получить более полное представление о них. В Google Colaboratory есть несколько хороших руководств для начала работы, а также размещена достойная платформа для кодирования ML. Ссылка: https://colab.research.google.com
- Документ, документ, ДОКУМЕНТ!!! Я усвоил этот урок трудным путем. Даже если вы пытаетесь изучить машинное обучение, устранять неполадки и делать заметки, запись того, что вы делаете и чего пытаетесь достичь, очень ценна в некоторых отношениях. Во-первых, это помогает с консолидацией памяти (см.:https://www.researchgate.net/publication/332301647_Writing_to_Learn_Increases_Long-term_Memory_Consolidation_A_Mental-_chronometry_and_Computational-modeling_Study_of_Epistemic_Writing)
Во-вторых, это помогает служить в качестве последующего справочника, чтобы понять, что вы делали. Не только за код, который вы пишете, но и за случайные мысли, которые у вас возникали, когда вы изучали свой персептрон. Сначала нужно приложить усилия, чтобы научиться, но в конце концов это окупается.
Я хотел бы знать эти три вещи, когда начинал свой путь машинного обучения, но я хочу, чтобы вы могли воспользоваться этими советами и получить небольшое преимущество в погружении в мир машинного обучения.