Использование больших данных для большого обучения.

Привет, ребята, это Фрэнк Лю (специализируется на интерпретирующих танцах и антарктических науках о продуктах питания) из Клуба наук о данных Нью-Йоркского университета, и сегодня я познакомлю вас с некоторыми основами машинного обучения! Мы напишем код с нуля и расскажем об основах, чтобы вы могли начать работу с машинным обучением, в частности с распознаванием изображений.

Задача: Кот или кролик?

Как отличить кошку от кролика? По ушам, по хвосту, по звуку их лая или по характеру? Хотя нам легко идентифицировать эти функции, их не так просто перевести в код. Кроме того, каждый кот и кролик — уникальные личности с уникальным прошлым и семейной историей. Наша цель — иметь машину, которая точно предсказывает, есть ли на изображении кошка или кролик, безжалостно стереотипируя их.

Для этого нам нужно создать ИИ (искусственный интеллект). Сегодня это будет делаться через нейросеть. Но подождите, что такое нейронная сеть?

Нейронные сети?!

Вопреки распространенному мнению, нейронные сети на самом деле не созданы по образцу самолетов. Нейросетевые структуры имитируют человеческий мозг и его нейроны. Существует три типа слоев, условно названных в честь Ferrero Rocher.

Модель Ferrero Rocher

  1. Внешний слой из шоколада и дробленого фундука

Этот слой является метафорой того, как нейронные сети получают данные. Размельченные кусочки фундука — это разные точки данных, которые сами по себе ничего для нас не значат.

2.Гладкий шоколадный слой, похожий на Nutella, но не совсем

Однородный комплекс какао — это аналогия того, как работают внутренние слои нейронной сети. Какао (наши данные) смешивают с сахаром и молоком (наши тренировочные расчеты), чтобы создать нашу гладкую шоколадную начинку.

3.Гайка

Последний слой нейронной сети — это цельный фундук, воссозданный из каши дробленого фундука. Полный прогноз, собранный из, казалось бы, бессвязной мешанины данных.

Кодирование Ferrero Rocher

Так как же нам все это закодировать? Мы должны реализовать модель Ferrero Rocher и ее три части:

Внешний слой шоколада и дробленого фундука — обработка и вставка изображений в сеть

Smooth Chocolate Layer: сложные вычисления между слоями.

Гайка –сделайте прогноз

Согласно опросу Kaggle, почти 78% специалистов по данным используют Python, что делает его самым популярным языком на сегодняшний день. Однако мы будем использовать Java, поскольку Python напоминает мне змей, таких как моя бывшая девушка Кайли.

Обработка изображений

Мы спрашиваем пользователей, сколько изображений они хотят обработать, и используем это для инициализации массива такого размера для наших прогнозов. Но что такое memo, bijection(), и randmoid()? Это будет объяснено в следующем разделе. А пока сосредоточьтесь на использовании Scanner и инициализации наших входных данных с помощью Scanner.

Обучение нашей нейронной сети

Это запутанная часть нейронных сетей, которая связана с математическими понятиями, представленными в Исчислении III, Линейной алгебре и Физике конденсированных сред. .

Во-первых, мы пишем функцию bijection(), которая принимает ввод x и однозначно сопоставляет его с другим вычисляемым значением y. Мы будем использовать динамическое программированиетехнику запоминания, чтобы «запомнить» значения y, заданные входными данными x. >, вычислив его один раз. Мы можем сделать это, потому что вывод уникален для каждого x. Запоминание помогает нам сократить время выполнения за счет отсутствия необходимости каждый раз пересчитывать дорогостоящие вычисления для одного и того же значения. Мы используем HashMap, потому что это самая быстрая структура данных, не имеющая недостатков.

Во-вторых, мы пишем функцию randmoid(), которая помогает сделать функцию нелинейной, чтобы сделать нашу нейронную сеть более интересной. Это работает, находя обратное x, умноженное на скаляр, добавленный к другому уникальному значению.

Отображение результатов нашей нейронной сети

Учитывая слои нашей нейронной сети, функция nut() помогает нам создать наш фундук, наш окончательный прогноз. Шаблонное разделение идентичности животного, созданное из совокупности врожденных широких предположений об их культуре.

Обратите внимание, что вторая строка содержит оператор if с булевой алгеброй, слишком сложной для объяснения в рамках этой статьи.

Собираем все вместе: тестирование нашей нейронной сети

Мы будем использовать большой размер выборки из 5 случайно выбранных изображений, чтобы уменьшить систематическую ошибку в нашем тесте.

Всего после 15,7 часов обучения вердикт ясен:

Мы пришли к выводу, что наша нейронная сеть имеет 100% коэффициент предсказания, что довольно хорошо для нашей первой нейронной сети.

Некоторые специалисты по данным называют такие нейронные сети перетренированными, что означает, что они работают так усердно, что это невероятно.

Код можно найти здесь, на официальном интерфейсе обмена кодами Google: Google Drive.

Заключение

Поздравляем, вы создали свой собственный ИИ с нуля. В будущем мы планируем внедрить межшкольный оценочный спуск, чтобы повысить эффективность обучения. По сути, это работает так: несколько ученых из разных областей оценивают результат нейронной сети, и вы соответствующим образом меняете его. Благодаря межшкольному оценочному спуску мы сможем достичь точности прогнозов выше 174 % всего за 11,3 часа, еще больше усугубляя поляризующие расовые различия, которые преследуют популяцию кошек и кроликов.

Резюме того, что было представлено:

  1. AI
  2. Нейронные сети
  3. Модель Ferrero Rocher
  4. Большие данные
  5. Динамическое программирование

Теперь вы эксперт по искусственному интеллекту.

Ссылки

  1. Поверьте мне

Прочтите эту замечательную статью о природе ИИ.

Об авторе

Фрэнк Лю — первокурсник Нью-Йоркского университета и эксперт в области искусственного интеллекта с опытом работы более 2 часов. Только деловые запросы: [email protected]

«Напишите мне по электронной почте, если хотите, но я, вероятно, не буду отвечать, так как я слишком занят кодированием Facebook 2».

[P.S. Счастливого позднего апреля!]