Я 20-летний студент колледжа Марист в Покипси, родом из очень маленького городка в Аргентине под названием Тукуман. У меня двойная специализация в области экономики и науки о данных, а также дополнительные специальности в области математики и информатики. В конечном счете, моя цель — получить докторскую степень по экономике, где я попытаюсь объединить обе дисциплины (экономику и науку о данных) для улучшения экономических исследований и прогнозирования путем включения идей и методов машинного и глубокого обучения.

В любом случае, хватит о себе, о чем я на самом деле пишу этот блог? Что ж, цель этой серии блогов — записать все интересные темы, которые я узнаю о глубоком обучении во время учебы. Это включает в себя то, что мне было легко понять, а также то, что мне было очень трудно понять или, может быть, до сих пор даже не до конца понял. Я считаю, что записывать вещи — отличный способ рационализировать концепции и новые идеи, которые вы изучаете, независимо от темы, и, следовательно, достичь более глубокого понимания такой темы.

Давайте углубимся в это…

В течение первого семестра первого года обучения в колледже я был нанят отделом наук о данных в колледже Марист для работы над искусственным интеллектом (ИИ), в частности над обработкой естественного языка (НЛП), проектом, целью которого было разработать диалоговый интеллектуальный чат-бот, способный отвечать на вопросы. о колледже. Для этого мне пришлось освоить несколько концепций и методов, необходимых для качественной работы в этой области. Некоторые из вещей, которые я считаю наиболее важными, это: линейная алгебра, многомерное исчисление, хорошие навыки программирования на Python, а также хороший дизайн программного обеспечения, фундаментальные концепции того, как машина может «учиться» на опыте (то есть на данных) и что действительно делает хорошую модель, прежде чем развертывать ее в производстве.

Это был короткий (всего год опыта работы в этой области) путь, но чрезвычайно интенсивный и плодотворный. После изучения python и хороших практик разработки программного обеспечения первое, на что вы можете обратить внимание, чтобы начать работу с Deep Learning, — это fast.ai курс глубокого обучения для программистов, который обеспечивает образовательный подход сверху вниз к обучению глубокому обучению, который я нашел быть супер выгодным. Под нисходящим подходом я подразумеваю, что инструктор Джереми Ховард начинает курс с объяснения основ глубокого обучения и всех фундаментальных концепций области, необходимых для понимания того, что на самом деле происходит, вместо того, чтобы начинать со всех математических требований. и низкоуровневые концепции, используемые для создания моделей нейронных сетей или глубокого обучения. Таким образом, вы можете убедиться, что хорошо понимаете, что такое глубокое обучение, а что нет, а также обозначения и жаргон, используемые в дисциплине, что облегчает понимание базовой математики, необходимой для продвижения ваших исследований в этой области.

В настоящее время я нахожусь на уроке 2 из 8 этого курса, и вот все, что я узнал до сих пор. Машинное обучение зародилось в 1940-х годах после того, как нейрофизиолог Уоррен МакКаллох вместе со своим коллегой Уолтером Питтсом, логиком, предприняли попытку математически представить поведение нейрона. Они приступили к написанию статьи под названием Логическое исчисление идей, имманентных нервной деятельности, в которой описывают все свойства нейронов нашего мозга и то, как они представляют их математически. Вот иллюстрация их мышления:

По сути, у наших нейронов есть дендриты, которые несут информацию, и ядро, которое обрабатывает эту информацию. После обработки данные проходят процесс обучения или анализа, что приводит к определенным результатам. Эти результаты могут быть классификациями или прогнозами. Те же идеи применимы математически, они разработали функцию, которая принимает некоторые входные данные (информацию), которые затем обрабатываются моделью (большой круг в середине графика), и такая модель выводит некоторые результаты. Пока довольно просто. После публикации своей революционной статьи многие ученые раскритиковали ее, заявив, что на самом деле невозможно применить все эти концепции на практике. Одним из таких критиков был Марвин Мински, в то время профессор Массачусетского технологического института, который сказал, что однослойные модели не могут понять простые математические структуры, такие как XOR, но это можно решить, добавив в модель больше слоев. К сожалению, в сообществе застряла только первая точка, а поле как бы застыло на несколько лет. К счастью, в 1986 году исследователи Дэвид Румелхарт и Джеймс Макклеллан опубликовали новаторскую работу в своей статье Параллельная распределенная обработка (PDP), в которой представили новый подход к программированию компьютеров, вдохновленный тем, как работает мозг. На самом деле подход, заложенный в PDP, очень похож на подход, используемый в сегодняшних нейронных сетях. В книге параллельная распределенная обработка определяется как требующая:

  1. Набор блоков обработки
  2. состояние активации
  3. функция вывода для каждого блока
  4. схема связи между единицами
  5. правило распространения для распространения шаблонов действий через сеть соединений.
  6. правило активации для объединения входных данных, влияющих на объект, с текущим состоянием этого объекта для создания выходных данных для объекта.
  7. Правило обучения, в соответствии с которым шаблоны подключения изменяются по мере накопления опыта.
  8. Среда, в которой должна работать система.

(Я извлек информацию, представленную в пунктах списка, из курса fast.ai, на который я предоставил ссылку в начале этого блога, пожалуйста, ознакомьтесь с ним)

Итак, после многочисленных взлетов и падений отрасль, наконец, консолидируется и завоевывает заслуженное уважение. Я хочу закончить этот пост, поделившись с вами основными выводами, которые я получил из первого урока курса fast.ai:

  • Вам не нужна докторская степень, чтобы начать работать и/или изучать машинное или глубокое обучение.
  • Вам не нужно быть математическим волшебником или математиком, чтобы начать. На самом деле, большинство вычислений — это просто простые сложения и умножения.
  • Вам не нужно много данных, чтобы использовать модели глубокого обучения, было множество статей, показывающих современные результаты с наборами данных всего из 50 или 100 образцов данных.
  • Одним из наиболее важных методов использования возможностей этих моделей является перенос обучения и точная настройка. Я напишу больше об обоих из них в следующем сообщении в блоге.
  • Наконец, самая важная вещь, о которой следует помнить при работе с машинными моделями и моделями глубокого обучения, — это разделить ваши данные на три подмножества данных: обучающий набор, проверочный набор и тестовый набор. Обучающий набор используется для обучения модели, набор проверки для обновления параметров вашей модели и набор тестов для оценки вашей модели на данных, которые она никогда раньше не видела.

На этом завершается моя первая запись в блоге о моем приключении в области глубокого обучения, в которой я попытался немного обобщить историю этой области, а также упомянул некоторые основные идеи, которые являются ключевыми для понимания того, что это такое. В своем следующем посте я намерен немного больше рассказать о деталях и жаргоне глубокого обучения, а также предоставить некоторый код, чтобы начать экспериментировать с моделями. Нет лучшего учителя, чем опыт, и эта серия будет посвящена именно получению этого опыта.