Pull to refresh
0
Edison
Изобретаем успех: софт и стартапы

[Перевод] Как я учился прогать ИИ последние два месяца

Reading time 5 min
Views 29K
Original author: Shival Gupta
image

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

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

То, что я full stack разработчик — это уже не круто. Full stack уже не «full» без компетенций в ИИ.

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


EDISON Software Development Centre
Коротко рассказываем о гибкой методологии разработки программного обеспечения (Agile), которую мы используем на проектах в EDISON Software Development Centre.



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

Создавая свою первую нейронную сеть


image

Мне часто советовали подписаться на курс Эндрю Ына (Andrew Ng) на площадке Coursera. Это отличное место, чтобы с чего-то начать, но я обнаружил, что мне трудно длительное время концентрироваться на предмете. Не то чтобы курс был плохим или что-то в этом роде, просто мне в принципе всегда сложно было оставаться внимательным на лекциях. Мой личный метод обучения всегда основывался на практике, и я подумал: «Черт, а почему нет, почему бы не сделать свою собственную нейронную сеть?».

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

Будучи погруженным до этого в Javascript и Nodejs, я все еще держался за них. Поэтому я нашел простенький модуль нейронной сети с названием «nn» и использовал его для реализации вентиля AND с примитивными входными данными. Воодушевившись примером, я поставил задачу: для любых трех вводных X,Y и Z — вывод X AND Y.

var nn = require('nn')
var opts = {
    layers: [ 4 ],
    iterations: 300000,
    errorThresh: 0.0000005,
    activation: 'logistic',
    learningRate: 0.4,
    momentum: 0.5,
    log: 100   
}
var net = nn(opts)
net.train([
    { input: [ 0,0,1 ], output: [ 0 ] },
    { input: [ 0,1,1 ], output: [ 0 ] },            
    { input: [ 1,0,1 ], output: [ 0 ] },
    { input: [ 0,1,0 ], output: [ 0 ] },
    { input: [ 1,0,0 ], output: [ 0 ] },
    { input: [ 1,1,1 ], output: [ 1 ] },
    { input: [ 0,0,0 ], output: [ 0 ] }
    ])
// send it a new input to see its trained output
var output = net.send([ 1,1,0]) 
console.log(output); //0.9971279763719718

Счастье-то какое!

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

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

image

Мысленно настраиваясь на ИИ


image

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

  • Я решил пару задач на «обучение с учителем», например, по регрессии и классификации.
  • Я использовал ограниченный набор данных при попытке предсказать, какая команда выиграет матч IPL, используя многовариантную линейную регрессию (предсказания никуда не годились, но было забавно).
  • Я поиграл с демо на ресурсе Google Machine Learning cloud (https://cloud.google.com/products/machine-learning/) для ознакомления в целом возможностями ИИ на сегодняшний день (здорово, что «Google» применяет там модель SaaS).
  • Я наткнулся на AI Playbook, который является отличным ресурсом, организованным уважаемым венчурным фондом «Andreessen-Horowitz». На самом деле один из наиболее полезных ресурсов для разработчиков и предпринимателей.

    image
  • Я подписался на замечательный Youtube-канал Сираджа Равала (Siraj Rawal), который посвящен глубинному и машинному обучению.
  • Я прочитал отменный пост на Hacker Noon о том, как продюсеры «Кремниевой долины» создали то самое приложение — «Not Hotdog». По-моему, это очень яркий пример того, на что способно глубинного обучение.
  • Я также читал блог Андрея Карпаты (Andrej Karpathy), который является директором отдела ИИ в «Tesla». И хотя я толком там ничего и не понял, оттуда я вынес помимо головной боли идею о том, что концепции при должном старании начинают обретать практический смысл.
  • Набравшись смелости, я начал использовать некоторые учебные материалы по глубинному обучению, стараясь настроить модель и выполнить код на моем компьютере. В большинстве случаев ничего не получалось из-за большого количества времени, которое требуется моделям для обучения, и к тому же у меня не было GPU.

Постепенно, я перешел от использования Javascript к Python’у и установил Tensorflow на своем компьютере с Windows.

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

Как сказал Стив Джобс: «вы сможете соединить точки, только оглядываясь назад».

Успеть заскочить на поезд чат-ботов


image

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

Так удачно сложилось, что статья «выстрелила» и была отмечена в TechInAsia, CodeMentor и KDNuggets. Лично для меня это было торжественным событием, т.к. я только начал вести блог на технические темы. Думаю, та статья стала для меня ориентиром на пути к ИИ.

Я подружился со многими людьми в Твиттере и Линкедине, с которыми можно обсудить развитие ИИ «и в ширь, и в глубь», и которые смогут мне помочь, если я на чем-нибудь застряну. Мне сделали несколько предложений поучаствовать в консультационных проектах, и, что приятней всего, молодые разработчики и новички в области ИИ стали обращаться ко мне с вопросом, с чего я начал свое поиски в этом направлении. Именно это и послужило поводом написания этой статьи — желание подсказать интересующимся данным вопросом с чего можно начать и мотивировать их на дальнейшее самостоятельное изучение данной темы.

Начать двигаться — это важнейшая (сложнейшая) часть путешествия.

Соль и перец


image

Для меня это было не просто. Когда я начал застревать с Javascript’ом, я с головой погрузился в Python и практически за ночь разобрался, как разбирать эти задачи на нем. Меня раздражало, когда мои модели не запускались на моей i7-машине или когда после многих часов обучения они выдавали невнятные результаты вроде 50% вероятности победы команды в матче по крикету. Изучение ИИ не похоже на изучение веб-фреймворка.

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

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

Гаурав Шарма (Gaurav Sharma), заслуженный лидер в области ИИ, финансовых технологий и шифрования, поделился со мной своими мыслями на эту тему:
«в эру искусственного интеллекта «быть умным» будет означать совсем другое. Нам необходимо, чтобы люди могли мыслить критически, творчески и выполнять работу, которая требует сильного морального вовлечения».

Вы должны быть впечатлены тем, что компьютеры вдруг могут учиться делать вещи сами по себе. Терпение и восхищение — вот два основных принципа, которых вам нужно придерживаться.

Это долгий-долгий путь. Очень изнуряющий, очень раздражающий и поглощающий бездну времени.

Но обнадеживает то, что любое путешествие уже началось, если был сделан первый шаг.
Tags:
Hubs:
+5
Comments 8
Comments Comments 8

Articles

Information

Website
www.edsd.ru
Registered
Founded
Employees
31–50 employees
Location
Россия