Как устроен код искусственного интеллекта

0
27

Искусственный интеллект (AI), машинное обучение и глубокое обучение: в чём разница

Машинное обучение: как учится ИИ

По сути, скрытые слои выполняют какую-то математическую функцию. Мы её не задаём, программа сама учится выводить результат. Можно научить нейросеть классифицировать изображения или находить на изображении нужный объект. Помните, как reCAPTCHA просит найти все изображения грузовиков или светофоров, чтобы доказать, что вы не робот? Нейронная сеть выполняет то же самое, что и наш мозг, — видит знакомые элементы и понимает: «О, кажется, это грузовик!»

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

Мы пользуемся Google-картами, позволяем сайтам подбирать для нас интересные фильмы и советовать, что купить. И, в общем-то, слышали, что под капотом всех этих умных вещей — искусственный интеллект, машинное обучение и deep learning. Но сможете ли вы с ходу отличить одно от другого? Разбираемся на примерах.

А ещё нейросети могут генерировать объекты: музыку, тексты, изображения. Например, компания Botnik скормила нейросети все книги про Гарри Поттера и попросила написать свою. Получился «Гарри Поттер и портрет того, что выглядит как огромная куча пепла». Звучит немного странно, но как минимум с точки зрения грамматики это сочинение имеет смысл.

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

Слабый интеллект — тот, что нам уже удалось создать. Такой ИИ способен решать определённую задачу. Зачастую даже лучше, чем человек. Например, как Deep Blue — компьютерная программа, которая обыграла Гарри Каспарова в шахматы ещё в 1996 году. Но такая Deep Blue не умеет делать ничего другого и никогда этому не научится. Слабый ИИ используют в медицине, логистике, банковском деле, бизнесе:

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

Чтобы обучить нейросеть, нужны гигантские наборы тщательно отобранных данных. Например, для распознавания сортов огурцов нужно обработать 1,5 млн разных фотографий. Не получится просто слить рандомные картинки или текст из интернета — их нужно подготовить: привести к одному формату и удалить то, что точно не подходит (например, мы классифицируем пиццу, а в наборе данных у нас фото грузовика). На разметку данных — подготовку и систематизацию — уходят тысячи человеко-часов.

Сильный ИИ (Strong, или General AI)

Есть байесовские алгоритмы. В их основе применение теоремы Байеса и теории вероятности. Эти алгоритмы используют для работы с текстовыми документами — например, для спам-фильтрации. Программе нужно дать наборы данных по категориям «спам» и «не спам». Дальше алгоритм будет самостоятельно оценивать вероятность того, что слова «Бесплатные туры для пенсионеров» и «Закажи маме тур, пожалуйста» относятся к той или иной категории.

ЧИТАТЬ ТАКЖЕ:  Как используется искусственный интеллект в науке

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

Следует ли разработчикам использовать искусственный интеллект для создания кода? Независимый эксперт Кристофер Тоцци обсуждает на портале ITPro Today плюсы и минусы кодирования с помощью ИИ. В течение многих лет идея о том, что можно автоматически генерировать пользовательский исходный код, казалась фантастикой. Но это стало реальностью благодаря новым сервисам, таким как GitHub Copilot и Tabnine, которые обеспечивают генерацию кода с помощью ИИ. Подобные решения перевели вопрос из плоскости «Как мы можем использовать ИИ для генерации кода?» в плоскость «Стоит ли нам использовать ИИ для генерации кода?». Однозначного ответа нет, но о плюсах и минусах кодирования с помощью ИИ в современной среде разработки можно сказать многое.

Идея автоматической генерации исходного кода для приложений особо новой не является. Инструменты разработки low-code и no-code существуют уже несколько десятилетий. А IDE уже давно предлагают функции автозаполнения, которые можно считать простой формой автоматической генерации кода. Отличие генерации кода с помощью ИИ, однако, заключается в том, что она не полагается, как средства low-code/no-code, на готовые модули кода, позволяющие разработчикам создавать приложения без написания большого количества кода (или вообще без кодирования). Вместо этого инструменты кодирования с помощью ИИ генерируют пользовательский код полностью с нуля. Это означает, что, по крайней мере в теории, нет никаких ограничений на то, что могут сделать инструменты генерации кода с помощью ИИ. При условии, что алгоритмы достаточно хороши, а данные, на которых они обучаются, достаточно обширны, такие инструменты в принципе могут писать очень сложные приложения, основываясь только на описаниях на естественном языке того, как эти приложения должны работать. Хотя разработчики уже давно говорят — обычно полушутя — об идее использования ИИ для написания кода, решения для кодирования с помощью ИИ стали действительно зрелыми только в последние пару лет. Они представляют собой, возможно, последнюю крупную инновацию в сфере разработки ПО.

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

Во вселенной Detroit роботы способны учиться, мыслить, чувствовать, осознавать себя и принимать решения. Одним словом, становятся похожи на человека. А в обычной жизни ближе всего к General AI чат-боты и виртуальные ассистенты, которые имитируют человеческое общение. Здесь ключевое слово — имитируют. Siri или Алиса не думают — и неспособны принимать решения в ситуациях, которым их не обучили. Сильный искусственный интеллект пока остаётся мечтой.

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь