Неделя создателей 9: практические проекты, нейронные сети и очень красивые пиксели

Добро пожаловать в мой блог об обучении программированию в Makers Academy. Если вы пропустили последний пост, вы можете найти его здесь.

Пятно самоанализа

В какой-то момент на этой неделе наступила какая-то глубокая усталость.

Холодные вечера и ранние ночи, кажется, не избавляют от усталости. У меня не было ни дня без программирования с февраля, включая выходные, и накопленные умственные упражнения сильно меняют.

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

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

Практические проекты

На этой неделе была генеральная репетиция 11 и 12 недель. У нас было 4 дня и 3 часа, чтобы создать минимально жизнеспособный продукт (MVP) для любого проекта, о котором мы только могли мечтать.

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

Было выбрано шесть человек, которые будут разбиты на группы по 4 человека:

  • Многопользовательская онлайн-игра, похожая на Snake
  • «Beetroute», веб-приложение, использующее Spotify API для создания списка воспроизведения песен из выбранной страны.
  • «Вторжение в захватчиков», проект по взлому Space Invaders и использованию кода.
  • Операционная система, построенная на Raspberry Pi (!)
  • «Найдите мой поезд», веб-приложение для людей в поездах, использующее данные геолокации для определения предполагаемого времени прибытия.
  • Нейронная сеть, обученная распознавать деревья по форме их листьев.

В конце недели нам сказали, что это самый амбициозный набор практических проектов, когда-либо реализованных в Makers.

Я был в восторге от работы над нейронной сетью, а также в восторге от того, что одна из моих идей, «Beetroute», была реализована другой группой. Если честно, я бы с радостью поработал над любым из них.

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

Мой опыт таков ...

Что, черт возьми, такое нейронная сеть?

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

Прямо сейчас нейронные сети как бы лежат в основе большого количества новаторских технологий искусственного интеллекта. Беспилотные автомобили и способность распознавания языков Amazon Alexa - два ярких примера.

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

Самое безумное, насколько они хороши в этом, и разнообразие данных, с которыми вы можете их обучить.

Вот отличный пример нейронной сети, которую чернокнижники из Google натренировали на тоннах научно-фантастических книг. Он узнал, что во всех книгах символы разделены на слова через равные промежутки времени. Узнал, что есть речь. Он изучил грамматику и пунктуацию. В конце концов, его обучили достаточно хорошо, чтобы создать жуткий сценарий, напоминающий научно-фантастический фильм.

И вот оно, исполненное на слово.

И, на всякий случай, песня, написанная компьютером на основе музыки Джона, Пола, Джорджа и Ринго. Нравится вам это или нет, но нельзя отрицать, что это Beatles.

Строительство один

Первым серьезным исследованием стало посещение конференции в лондонском центре SkillsMatter (где постоянно проводятся бесплатные технические беседы) с товарищем по команде Эмили Чай. Многие из них предполагали, что аудитория немного знакома с нейронными сетями, но я чувствовал, что знаю достаточно, чтобы немного поучиться. Ссылка на запись выступления приведена ниже.



После разговора мы загнали оратора Виллема Хендрикса в угол, чтобы он попросил совета, как разобраться с сетью за неделю. Он был очень дружелюбным и имел достаточно времени для нас, двух новичков в области глубокого обучения.

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

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

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

«Иногда наука - это больше искусство, чем наука. Многие люди этого не понимают »

- Рик С-137

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



Затем мы выделили полтора дня, чтобы узнать как можно больше о нейронных сетях и способах их создания. Серия статей Адама Гейтгея «Машинное обучение - это развлечение» (ссылка ниже) - это лучшее введение в тему, которую вы найдете.



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

Руководствуясь рекомендацией Виллема, мы перешли к изучению Tensorflow, библиотеки нейронных сетей Google для Python. Это также означало, что нам нужно было изучить Python, но я подумал, что это не будет большой проблемой.

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

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

К вечеру среды у нас была функциональная нейронная сеть для распознавания рукописных цифр с использованием двух технологий, которых мы не касались несколько дней назад. У него был один слой, и его успешность составляла около 91%, что, как мы узнали, довольно неприятно в мире нейронных сетей.

Позже, после изучения того, как реализовать сверточные слои (для создания снимков составных частей изображения), максимальное объединение (для передачи наиболее `` интересных '' частей каждого снимка) и выпадение (случайное исключение данных между итерациями в уменьшить переоснащение модели), наш показатель успеха вырос до гораздо более приличных 96,54%. Почувствовал себя Зевсом.

Затем, в четверг, произошло нечто волшебное.

Я и моя напарница, Стефани Крампин, работали над тем, чтобы передать в нашу нейронную сеть новый единичный фрагмент данных. Мы знали, что он работает на тестовом наборе рукописных цифр, который нам предоставил учебник Tensorflow, но хотели скормить ему наш собственный материал.

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

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

Мы потратили еще пару часов, пытаясь заставить Python дать нам что-то связанное с изображениями, прежде чем сгенерировать это.

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

Потом внезапно мы получили это, и я стал самым счастливым человеком в Восточном Лондоне.

Затем Стеф раскрасила его, и я чуть не взорвался.

Причина, по которой я был так взволнован, заключалась в том, что приведенное выше изображение представляет то, что наш алгоритм решил, что такое рукописный ноль. Он не понимает понятия нуля, числа или математики. Из изображений только что стало известно, что попадание в самые синие пиксели делает ноль вероятным результатом, а попадание в самые красные пиксели делает ноль маловероятным.

И несмотря на всю мощь кода, мы извлекли математические вычисления, сгенерированные компьютером, и превратили их в компьютерно-сгенерированное изображение.

Думаю, мы сделали что-то очень красивое.

Затем мы попытались передать в нашу сеть набор данных о листьях, но, к сожалению, у нас не хватило времени. Оказывается, подготовка набора данных - не та задача, над которой стоит чихать. Я добавлю его в свой постоянно растущий список дел. Однако нам удалось передать в сеть наши собственные единые номера, которые ей удалось классифицировать в прямом эфире перед остальной когортой.

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

Вот еще несколько выдуманных цифр нашей сети:

Так допинг.

СЕГОДНЯ ЗАЖИМ

Plantasia - это восхитительно странный альбом, созданный для того, чтобы его можно было проигрывать растениям, чтобы помочь им расти. Это детское телешоу 60-х / бюджетная научно-фантастическая атмосфера. Мне это нравится. Если вам это не нравится, то это потому, что я больше похож на растение, чем вы.

Если вы читали мимо тапира, скорее всего, вы прочитали его целиком. Если вам понравилось, нажмите на сердечко ниже. Это поможет другим найти это и получить от этого удовольствие.