В начале книги хотел бы рассказать
немного о себе и своём опыте, чтобы
ваше погружение в текст происходило
максимально осознанно. И чтобы ваше
понимание описанного коррелировалось
с моим опытом.
Меня зовут Денис Некрасов, IT-предприниматель, разработчик ПО и программ для ЭВМ. У меня есть патенты и свидетельства в государственном реестре. Уже более 15 лет я так или иначе занимаюсь бизнесом, а последние 6 лет — в сфере IT. Я изучаю нейросети, и создаю свои модели, которые применяю в своей деятельности. Также интересуюсь влиянием нейросетей на общество и повседневную жизнь. В этой книге хочу поделиться с вами своим опытом, знаниями и мыслями о нейросетях — технологии, которая меняет наш Мир. Вы узнаете, как нейросети могут помочь вам в разных областях: образовании, развлечениях, здоровье, бизнесе и обществе. Также обсудим, что нам стоит ждать в будущем и стоит ли опасаться развития и активного внедрения нейросетей. В книге я буду приводить реальные примеры применения нейросетей, а также немного теории и прогнозов. Приятного погружения!
Введение: нейросети — что это такое и почему они меняют мир?
Нейросети — это один из видов искусственного интеллекта, который пытается имитировать работу человеческого мозга.
Нейросети состоят из множества связанных узлов, называемых нейронами, которые обрабатывают информацию и передают её дальше. Нейросети способны обучаться на данных, адаптироваться к изменениям и решать сложные задачи. Мы используем их в разных сферах жизни: от распознавания лиц и голоса до создания музыки и искусства. Нейросети меняют наш Мир, делая его более умным, удобным и интересным.
Но что такое нейросети на самом деле? Как они работают и как они появились? Что они могут делать и чего не могут? Какие преимущества и риски они несут для нас? Это то, в чём мы попытаемся разобрать в этой книге. Я не буду углубляться в сложные математические формулы и алгоритмы, а постараюсь объяснить всё простым языком и с помощью примеров из реальной жизни. Задача книги, чтобы вы не только поняли, что такое нейросети, но и заинтересовались ими и увидели, как они могут помочь вам в разных областях.
Давайте начнём с примера. Вы когда-нибудь задумывались, как ваш смартфон может распознавать ваше лицо или отпечаток пальца? Как он может переводить текст с одного языка на другой? Как он может предлагать вам подходящие приложения или фильмы? Всё это возможно благодаря нейросетям. Они обучаются на большом количестве данных, например, на фотографиях лиц или текстах на разных языках, и находят закономерности в них. Затем они используют эти закономерности для распознавания новых данных или генерации нового контента. Например, нейросеть, которая обучалась на фотографиях лиц, может определить, кто изображён на новом снимке или даже создать новое лицо, которого не существует в реальности. Можно посмотреть проект this-person-does-not-exist. На этом сайте нейросеть создаёт лица никогда не существовавших людей.
Нейросети появились не вчера. Их история начинается ещё в 1943 году, когда два учёных — Уоррен Маккалок и Уолтер Питтс — предложили математическую модель нейрона — основной единицы человеческого мозга. Они показали, что такие нейроны могут объединяться в сети и выполнять логические операции. Это был первый шаг к созданию нейросетей.
Примечание: используемые в книге фото являются продуктом генерации нейросети. Вообще все фото и картинки в этой книги это либо мои личный фотографии, скриншоты и рисунки, либо то, что для меня сгенерировала нейросеть. Чтобы не разбираться с авторскими правами я не стал вставлять в книгу реальные фото людей. Если вам интересно, как выглядят учёные о которых мы тут говорим, вы всегда можете найти их по запросам в интернете.
Однако настоящий прорыв произошёл в 1957 году, когда Фрэнк Розенблатт создал перцептрон — первую нейросеть, способную обучаться. Перцептрон состоял из двух слоёв нейронов: входного и выходного. Входной слой получал информацию, например, изображение буквы, а выходной слой выдавал ответ, например, название буквы. Перцептрон обучался на примерах правильных ответов и корректировал свои веса — коэффициенты, определяющие важность каждого входа для каждого выхода. Таким образом, перцептрон мог научиться распознавать буквы или другие простые объекты.
Перцептрон вызвал большой интерес и восторг среди учёных и общественности. Многие полагали, что это начало новой эры искусственного интеллекта. Однако вскоре стало ясно, что перцептрон имеет серьёзные ограничения. Он не мог решать задачи, которые требовали нелинейности, то есть такие, которые не могут быть разделены прямой линией. Например, перцептрон не мог научиться функции XOR — исключающее ИЛИ. Это означало, что перцептрон не мог справиться с более сложными задачами, такими как распознавание рукописного текста или голоса. В 1969 году два учёных — Марвин Минский и Сеймур Пейперт — опубликовали книгу «Перцептроны», в которой доказали эти ограничения и критиковали перспективы нейросетей.
Эта книга поставила крест на развитии нейросетей на долгие годы. Наступил так называемый «зимний период» в искусственном интеллекте.
Однако некоторые учёные не сдались и продолжали работать над улучшением нейросетей. Они поняли, что для решения более сложных задач нужно добавить больше слоёв нейронов между входным и выходным. Так появились многослойные нейросети или глубокие нейросети. Они также использовали разные функции активации — формулы, определяющие, как нейрон реагирует на входящий сигнал. Одна из таких функций — сигмоида — позволяла создавать нелинейные нейросети.
Кроме того, они разработали новый алгоритм обучения — обратное распространение ошибки — который позволял корректировать веса всех слоёв нейросети, а не только последнего. Эти достижения открыли новые возможности для нейросетей и привели к возрождению интереса к ним в 1980-х годах.
Тут сделаем небольшое отступление, и я попробую объяснить, что такое «веса» в нейронных сетях.
Давайте представим, что нейронная сеть — это как обучаемая команда роботов, которая умеет решать задачи.
Каждый нейрон (робот) в этой команде принимает на вход какие-то данные, подобно тому, как робот видит мир вокруг себя. Но важно, чтобы роботы знали, насколько важны разные части данных. Вот где «веса» играют роль!
«Веса» — это числа, которые говорят роботам, как сильно им следует обращать внимание на каждый входной сигнал. Если какой-то вход важен для решения задачи, роботу нужно присвоить больший вес этому входу. Если вход не так важен, то вес будет меньше.
Пример: представьте себе, что у нас есть робот-повар, который готовит пиццу. Он видит разные ингредиенты: тесто, сыр, соус, оливки и ветчину. Каждый ингредиент — это входной сигнал для нашего робота.
• Робот знает, что без теста пицца не получится, так что он дает вес «тесту» больше.
• Оливки могут быть не у всех, на любителя, поэтому они получают меньший вес.
• Сыр и соус — важные части пиццы, но не такие обязательные, как тесто, так что они получают средний вес.
• Ветчина — это любимая добавка многих, но не обязательная, поэтому она тоже получает средний вес и так далее.
Веса помогают роботу решить, какие ингредиенты использовать для готовки самой вкусной пиццы. Таким образом, веса в нейронных сетях помогают сориентироваться, какие входы важнее для решения задачи, а какие менее важны.
Вернёмся к истории.
В 1990-х годах нейросети стали применяться в разных областях: от распознавания речи и лиц до игровых приложений и финансового анализа. Однако они все ещё сталкивались с проблемами, такими как переобучение — когда нейросеть хорошо работает на тренировочных данных, но плохо на новых данных — или затухание градиента — когда корректировка весов становится слишком маленькой и нейросеть перестаёт обучаться. Также нейросети требовали много данных, вычислительной мощности и времени для обучения. Из-за этого они не могли конкурировать с другими методами машинного обучения, такими как опорные векторы или деревья решений.
Но всё изменилось в 2000-х годах, когда появились новые технологии и данные, которые дали толчок развитию нейросетей. С одной стороны, появились большие наборы данных, такие как ImageNet — коллекция из более 14 миллионов изображений, размеченных по категориям. С другой стороны, появились новые аппаратные средства, такие как графические процессоры (GPU) и тензорные процессоры (TPU), которые позволяли ускорить вычисления и обучение нейросетей. Также появились новые архитектуры и методы нейросетей, такие как свёрточные нейросети (CNN) — специализированные для обработки изображений, рекуррентные нейросети (RNN) — способные обрабатывать последовательности данных, например, текст или речь, и генеративные состязательные сети (GAN) — способные создавать новые данные, например, изображения или тексты.
В 2012 году произошло событие, которое можно назвать революционным для нейросетей. Команда учёных под руководством Джеффри Хинтона представила свою свёрточную нейросеть под названием AlexNet на конкурсе по распознаванию изображений ImageNet Challenge. Эта нейросеть показала поразительный результат: она уменьшила ошибку распознавания на 10 процентных пунктов по сравнению с предыдущим лидером. Это было сравнимо с человеческим уровнем распознавания. AlexNet использовала восемь слоёв нейронов и обучалась на двух GPU в течение пяти дней. Этот успех показал, что глубокие нейросети могут превзойти другие методы машинного обучения и даже человеческий интеллект в некоторых задачах. С тех пор начался бум развития и применения нейросетей в разных областях.
Сегодня мы живём в эпоху нейросетей. Они повсюду: в наших смартфонах, компьютерах, интернете, социальных сетях, играх, медицине, науке, искусстве и т. д. Они помогают нам в повседневной жизни: переводят тексты и речь, распознают лица и объекты, фильтруют спам и рекламу, рекомендуют продукты и контент, создают музыку и картинки, играют в шахматы и Го и многое другое. Они также помогают нам в образовании, развлечениях, здоровье, бизнесе и обществе. О них мы и будем говорить в следующих главах.
Работая над этой книгой, я ещё больше погружаюсь в понимание и осмысление нейронных сетей, и как сказал один известный учёный и писатель: «Лучший способ понять что-то — это объяснить это другому”*. Именно этим и займёмся.
*Ричард Фейнман, американский физик и лауреат Нобелевской премии.
УГЛУБЛЯЕМСЯ В ПОНИМАНИЕ НЕЙРОСЕТЕЙ. УРОВЕНЬ ДЖЕДАЙ
В этой главе я простым языком на примерах попытаюсь объяснить вам, что же такое нейросеть, как она устроена и стоит ли нам её опасаться.
Как физически выглядит нейросеть
Нейросеть хранится в специальном формате, который называется ONNX (Open Neural Network Exchange). ONNX — это открытый стандарт для обмена моделями машинного обучения между разными фреймворками и платформами. ONNX позволяет сохранять не только параметры нейросети, но и ее архитектуру, то есть структуру и функции слоев. ONNX файлы имеют расширение. onnx и могут быть скопированы, пересланы и развернуты на любом другом устройстве, которое поддерживает этот формат. Конечно, есть и другие форматы, например TensorFlow и HDF5. HDF5 — это еще один формат для хранения моделей машинного обучения, который поддерживается библиотекой Keras. HDF5 файлы имеют расширение. h5 или. hdf5 и также могут быть скопированы, пересланы и развернуты на других устройствах.
Конечно, это очень простой пример. Даже боты которых я пишу и использую имеют более сложную структуру, десятки файлов и огромное количество строк кода. В последней главе этой книги мы с вами «препарируем» один из моих проектов на основе нейросети и я покажу, что там внутри и что она из себя представляет.
На что я хочу обратить ваше внимание, это никакие не пугающие и не непонятные устройства, нейросеть это, если утрировать, то как любой файл на вашем компьютере, фильм, фото, книга или аудиофайл.
Для примера, ChatGPT — это проект, который использует нейросеть GPT-3 для создания интерактивных диалогов на разных языках. Нейросеть GPT-3 — это одна из самых больших и мощных нейросетей в мире, которая состоит из 175 миллиардов параметров. Параметры — это числа, которые определяют, как нейросеть обрабатывает и генерирует текст. Чем больше параметров, тем лучше нейросеть может понимать и создавать разнообразный и сложный текст.
Проект ChatGPT использует несколько версий нейросети GPT-3, которые обучены на разных языках и доменах. Каждая версия хранится в отдельном ONNX файле, который имеет свое имя и размер. Например, версия ChatGPT-en-base. onnx — это базовая модель для английского языка, которая имеет 1.3 миллиарда параметров и занимает 5 ГБ памяти. Версия ChatGPT-ru-large. onnx — это большая модель для русского языка, которая имеет 2.7 миллиарда параметров и занимает 10 ГБ памяти.
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.