Здравствуй, Мир, это Сирадж и...
Оставайтесь на линии.
- Алло
- Сирадж, меня зовут Норт и мне очень нужна твоя помощь.
- Что тебе нужно?
- У меня нет времени объяснять, меня преследуют. Можешь просто нажать клавишу "4"?
- Подожди! Кто ты? Алло! Алло!
- Клавишу "4"? ОК!
- Вау! Что? Где я? Что это за место?
- Замри! Подними руки, чтобы мы могли видеть их!
- Эй! Ты уже здесь! Прыгай в машину!
- Подожди! Кто ты?
- Просто прыгай внутрь, пока они не сделали тебе утечку мозгов!
- ОК. Мне определенно не хочется утечки мозгов.
- О, боже мой! О, боже мой! ОК. Это было совсем рядом.
- Секундочку! Ты же ребенок. Откуда ты умеешь водить машину?
- У нас здесь дети лучше взрослых водят машины. Я же могу играть в видео игры.
- Хорошо. Но, что это за место и почему тебе нужна моя помощь?
- Этот мир называется Кола.
Он похож на Землю, но не на самом деле.
Я попросила одного друга телепортировать тебя сюда
потому, что мне нужна твоя помощь в поиске знаменитого прибора, который называется Люма.
- Подожди, то есть я на другой планете? - Да.
- Да ну! Хорошо, а что это за Люма?
- Это прибор, сравнимый с целой планетой наполненной неисчерпаемой, бесплатной, чистой  энергией.
Он мог бы спасти нашу планету от разрушения вызванного загрязнением.
Его местонахождение на этой флешке.
Но мне нужна твоя помощь в поиске полезной информации с флешки.
Правитель Колы Король Нана охотится за этой флешкой потому, что он
хочет использовать её мощь в своих целях, чтобы создать гигантский бургер для себя,
вместо того, чтобы питать энергией весь мир!
Не допустим этого. Мы должны опередить его.
- ОК. Я точно не хочу, чтобы твоя планета была разрушена. Итак за дело!
- Хорошо! Итак я просто подключаю флешку к ноутбуку и... мы начинаем!
- Подожди. Но это же просто набор фотографий твоей планеты -
горы, скалы и озера.
- В точку! Я получила эти изображения со спутника.
На одной из этих фотографий есть Люма.
Он ярко-розовый.
Нам надо найти, на которой картинке изображен Люма?
Но у меня этот  поиск займет годы - на флешке 5 миллионов фотографий
и поэтому мне нужна твоя помощь.
Ты разбираешься в компьютерах и поэтому мог бы научить меня, как это сделать.
- Хорошо. Я могу помочь. Дай-ка посмотрю... Хм...
Ты знаешь, что такое программирование?
- Я слышала об этом, но знаю о нём совсем мало.
- ОК. Проверь себя.
Итак, компьютер это машина.
и мы можем использовать его буквально как только можем себе вообразить.
И программирование это способ, которым мы можем сделать это.
Ты можешь также называть его кодирование или разработка программного обеспечения.
По сути это набор команд, которые мы даем компьютеру, чтобы он выполнил какую-то задачу.
Этой задачей может быть игра, например, Супер Марио
или проигрывание списка песен
или даже создание веб-сайта.
- Звучит отлично!
А как я могу запрограммировать что-нибудь?
- Хорошо. Сначала тебе надо выбрать язык программирования.
- ОК. Какой, например?
- Итак, компьютеры читают команды, как набор единиц и нулей.
Это команды, которые легко читаются компьютером,
но нам их читать очень сложно.
Поэтому мы можем использовать языки программирования,
такие как С или Java или Python,
которые состоят из слов, а не из чисел,
так, что мы можем читать их и понимать, как они работают.
Если мы возьмем такой язык, как Python
мы сможем написать простую программу, которая просто говорит:
"Здравствуй, Мир"
все что мне требуется это напечатать команду:
'print' и фразу 'hello world'
в текстовом редакторе Python'a.
Затем я нажимаю кнопку Run и он скажет:
"Здравствуй, Мир" в окне вывода
Это вывод программы
Смотри. Для нас программа просто говорит: напечатай Здравствуй, Мир.
Но под капотом весь этот текст разбивается на набор единиц и нулей,
так чтобы компьютер мог прочитать и выполнить это.
- Это здорово!
Итак я предполагаю Python это лучший язык программирования?
- Ну, определенно это мой самый любимый.
Python это подходящий язык для того чтобы начать программировать.
Но в конце концов программирование это жанр искусства.
Где ты можешь совершенствоваться через практику.
Это искусство решения проблем.
Мне очень нравится Python потому, что тебе не надо много думать над тем, какие команды использовать.
Вместо этого ты можешь сосредоточиться на решении проблемы.
- Мой ответ: я хочу использовать Python/
Как мы будем использовать Python для поиска Люма среди всех этих изображений?
- Мы должны использовать машинное обучение вместе с Python'ом.
- Что за машинное обучение?
- Итак. Традиционный способ программирования это говорить компьютеру, что ему следует делать,
давая ему точные инструкции.
Допустим, мы хотим чтобы он нашел Люму на фотографии.
Мы можем написать код, который сможет определить все различные характеристики того, как выглядит Люма.
Его цвет, форму, размер.
Но Люма может быть в различных положениях на одном из этих фото.
Нет гарантий того, как он в точности будет выглядеть.
У тебя есть несколько изображений Люма, так?
- Конечно. Они на компьютере.
- Хорошо. Вместо того, чтобы мы говорили компьютеру, как выглядит Люма,
мы можем научить его, как Люма выглядит.
Это называется машинным обучением.
Это когда мы даем компьютеру не набор инструкций для выполнения задачи,
а набор данных и задачу, и обучаем его на этих данных, чтобы выполнить задачу.
Итак, мы можем использовать Python чтобы создать модель машинного обучения.
Затем мы "скормим" нашей модели набор изображений Люма
Наша модель научится в точности тому, как выглядит Люма.
Затем, после того как она научится тому, как выглядит Люма,
мы можем дать ей все снимки со спутника, которые у тебя есть, и она скажет нам, если найдет на них Люма.
- Здорово! А как мы сделаем модель машинного обучения?
- Итак, существует много различных моделей машинного обучения, которые мы можем использовать
но по-настоящему крутая, которая мне очень нравится
называется Нейронная сеть.
Нейронная сеть может обучиться чему угодно,
если мы дадим достаточно данных и вычислительных мощностей.
Вот как она работает.
Если у нас есть какие-то данные из двух колонок:
первая колонка - набор изображений Люма,
вторая колонка - набор меток, который говорит является ли изображение Люмой или нет.
Мы можем последовательно бросать данные в нейронную сеть, по одной картинке за раз.
Существует какой-то шаблон здесь.
Какой-то вид зависимости между двумя колонками.
И нейронная сеть может вывести её.
После того, как она выучила этот шаблон,
мы можем дать ей новое изображение и она будет способна автоматически сказать нам
есть на нем Люма или нет.
- Как она сделает это?
- Нейронная сеть это всего лишь несколько математических операций.
Наш вход это изображение. Но если задуматься, что такое изображение?
Изображение это всего лишь набор чисел, набор пикселей и каждый пиксель
имеет значение, которое определяет его цвет.
Компьютер читает эти пиксели и таким образом показывает цвета изображения.
Таким образом, это таблица чисел, а наша нейронная сеть это набор математических операций.
Она состоит из уровней.
Давай, возьмем простую нейронную сеть из трех уровней:
вход, скрытый уровень и выход.
В нейронной сети данные попадают со входа, через скрытый уровень на выход.
Когда они попадают на выход, сеть делает прогноз того, что, по её мнению, она видит.
Наборы весов соединяют все эти уровни между собой.
Каждый набор весов это матрица.
И поскольку у нас три уровня
у нас есть два набора весов между всеми уровнями.
- Что такое матрица? Пожалуйста, не говори, что это как-то связано с фильмом со слоумо!
- Что? Вы смотрите голливудские фильмы на своей планете? Хорошо, не бери в голову.
Матрица это математический термин, определяющий набор чисел у которого есть строки и столбцы.
Прямо как у нашего изображения.
Мы будем умножать наши входы на первый набор весов
и это даст нам новый набор чисел.
Затем мы возьмем эти числа и "скормим" их тому, что называется функцией активации.
Функция активации даст нам новый набор данных на скрытом уровне.
Мы возьмем эти числа и повторим процесс снова, используя эти числа как вход:
вход, умножаем на веса, активация. Вот так!
И это дает нам выход - значение предсказания, которое говорит
с каким процентом нейронная сеть думает о том, является ли изображение Люма или нет.
- Подожди-подожди! Что такое "функция активации"?
- Это математическая формула, которая обеспечивает то, что наша нейронная сеть может
выучить любую взаимосвязь.
Существует два вида взаимосвязи: линейная и нелинейная.
То есть, если бы мы нарисовали графики зависимости между любыми двумя величинами,
линия могла бы быть прямой или извилистой.
И наша функция активации позволяет нейронной сети научиться выявлять обе этих зависимости.
Но, да. Мы можем включить в нашу нейронную сеть столько уровней, сколько захотим.
Мы также можем попытаться изменить нашу нейронную сеть, чтобы она выполняла любые виды математических операций.
- Подожди-подожди!
Так много всего они могут. Давай, пока использовать простую нейронную сеть.
- Согласен. Мы можем запрограммировать нейронную сеть на Python очень просто,
всего лишь несколькими строчками кода.
Каждая строка представляет собой отдельный уровень, используемый нейронной сетью.
Каждое из этих ключевых слов, это математическая операция,
которую использует наша сеть.
Процесс, который использует наша сеть называется Обучение (train).
Мы создаем нейронную сеть как две матрицы
и числа в каждой из матриц изначально заполняются в случайном порядке.
Мы собираемся подать на вход изображения Люма, по одному за раз.
Мы сделаем это 60000 раз. Это называется Обучение.
Мы умножим наш вход на веса, затем активируем результат.
Мы выполним это дважды.
Затем мы посмотрим насколько ответ далек от реальности и используем эту разницу,
чтобы обновить значения обоих наших наборов весов.
Мы будем продолжать это снова и снова, до тех пор пока
случайные числа, с которых мы начали, не начнут становиться по настоящему полезными.
Итак, когда мы дадим нашей сети изображение Люма, она
будет точно знать, является ли это изображением Люма или нет.
- Взрывающиеся обезьяны уже здесь, мы должны найти Люма, сколько времени займет обучение?
- Ты сказала Взрывающиеся обезьяны?
- Да.
- Хорошо. Оно уже завершено. ОК.
Дай-ка мне фотографии со спутника. Она нашла его!
Он на этой фотографии.
- Здорово! У меня есть координаты. Давай телепортируем его.
Вот он! Да! Спасибо, Сирадж!
- Всегда пожалуйста! Удачи! Нам на Земле такой тоже не помешал бы!
Кстати о Земле. Можешь телепортировать меня обратно?
- Конечно! Пока!
- Увидимся!
- Отлично! Так хорошо вернуться назад!
Три вещи которые надо запомнить из этого видео:
традиционное программирование - это когда дают компьютеру какие-то команды.
Машинное обучение это форма программирования, когда вместо инструкций
мы даем компьютеру какие-то данные и цель.
И затем компьютер учится, как достичь цели, используя данные.
И нейронная сеть это модель машинного обучения, которая может учиться на данных
и она состоит из матричных операций:
вход умноженный на веса, активация.
И есть два вида взаимосвязи данных: линейный и нелинейный.
Прямая линия или извилистая.
Нейронные сети могут выявлять оба вида.
Пожалуйста, подписывайтесь на новые видео о программировании и с Новым Годом!
Спасибо за внимание!
