{"id":14279,"url":"\/distributions\/14279\/click?bit=1&hash=4408d97a995353c62a7353088166cda4ded361bf29df096e086ea0bbb9c1b2fc","title":"\u0427\u0442\u043e \u0432\u044b\u0431\u0435\u0440\u0435\u0442\u0435: \u0432\u044b\u0435\u0445\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0438\u043b\u0438 \u0437\u0430\u0435\u0445\u0430\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435?","buttonText":"","imageUuid":""}

Как работают нейросети - коротко и простыми словами

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

Когда такой алгоритм «как из данных X получить результат Y» мы можем своим умом сформулировать и запрограммировать – всё отлично.

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

Нейронные сети позволяют нам не формулировать алгоритм (формулу) своим умом, а находить его итеративным путём и вот как это работает:

Все уже видели такие схемы с кружочками – нейронами и стрелочками –связями, но как это реально понять без нудной теории? А вот так:

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

Изначально, все связи – это случайные числа. Поэтому все математические операции со входными числами изображения дают случайные результаты. Для упрощения, можно представить это как железнодорожную схему с со случайными семафорами:

Необученная нейросеть

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

Обучение

Обучение же нейросети направлено на то, чтобы связи скорректировать таким образом, чтобы преобразования внутри были не случайными, а при заданном X выдавали желаемый Y. Процесс обучения полностью автоматизирован и происходит следующим образом:

  • На вход подается изображене собаки или кота (с заранее известным нам правильным результатом)
  • Вычисляется насколько нейросеть ошиблась
  • Ранее полностью случайные связи математически корректируются и становятся менее случайными и ошибка уменьшается

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

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

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

Такой точный и сложный алгоритм мы не могли бы придумать самостоятельно, но получаем его в процессе обучения нейросети. После обучения мы сохраняем сфомированные связи и можем использовать это как обычную программу: подать что-то на вход и получить ожидаемый результат. Вся эта магия – практически одна математика и никаких "искусственных интеллектов" :)

P.S. Я — разработчик и предприниматель. Мой основной бизнес это RocketBrush Studio — студия аутсорсинга и разработки игр. Мы активно растем, и если вдруг вы лично ищете работу или ваша организация предлагает услуги для бизнеса, то у нас есть задачи в области управления, маркетинга, развития бизнеса и продаж (B2B, США \ Европа), SEO и SMM, Веб-дизайна, QA (Unity), Unity C# и Node.JS разработки. А также я ищу хорошего помощника.

Вы можете связаться со мной через [email protected]. Я открыт для любых предложений в области бизнеса и IT \ gamedev.

0
58 комментариев
Написать комментарий...

Комментарий удален модератором

Развернуть ветку
Владимир

Ну только ребёнку достаточно обычно один раз увидеть котика чтобы отличать его от собачки

Ответить
Развернуть ветку
19 комментариев
High Stakes

Сравнивать нейронки с мозгом - все равно что птицу с самолетом.

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

Ответить
Развернуть ветку
2 комментария
Alex Rublev
Автор

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

Ответить
Развернуть ветку
Не очень хороший человек

как минимум ИИ мрт не пройдет

Ответить
Развернуть ветку
Бинарный Ёж

Нет, в мозгу намного сложнее.
https://www.youtube.com/watch?v=F3boqW8DT5g

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Zamir Saidov

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

Ответить
Развернуть ветку
Alex Rublev
Автор

Свою ChatGPT сделать не получится по многим причинам:
1. Нужен огромный объем данных для обучения чтобы из любого набора слов получить осмысленный результат.

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

3. Обучение нейросети - это как майнинг биткоинов: трудозатратные для железа математические операции. Чтобы обучить такую сеть как ChatGPT нужны супер-компьютеры :)

Ответить
Развернуть ветку
4 комментария
Alex Rublev
Автор

Да, значения каждой связи (веса) сохраняются после обучения. Для котодетектора не скажу, нет такой сети под рукой. Но для вот таких https://www.youtube.com/watch?v=Hg3nmYD3DjQ футболистов мозги весят 2Мб и имеют 460.000 весов. Обучить такую нейронку на мощном компьютере вполне качественно можно часов за 10.

Ответить
Развернуть ветку
Mercator

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

Ответить
Развернуть ветку
Denis Zotov
Это самое обучение как данные где-то хранится? Т.е. чтобы не обучать заново каждый раз?

Конечно, тот же ChatGPT так и работает: каждому пользователю предоставляется одна и та же уже обученная модель в одинаковом начальном состоянии (хм, звучит как реклама эскорт-агентства...). Далее, общаясь со своей копией, пользователь "донастраивает" модель под свой разговор, но общая основа остается неизменной.

Ответить
Развернуть ветку
Евгений Вилков

Я тоже писал о том, что умеет нейросеть gpt
https://vc.ru/tech/580739-chto-umeet-chat-gpt-kak-polzovatsya-v-rossii

Еще сделал чатбот gpt, в канале в закрепленных. https://t.me/kolerskych

Ответить
Развернуть ветку
Павел Иванов

Ахах, Вы ещё не видели, что умеет нейросеть S1m0ne

Ответить
Развернуть ветку
PriceLoom.com

Уже больше месяца использую chatGPT для разных задач. Внизу окна чата написан номер версии. Помню была от 7.01, потом от 30.01, сейчас от 13.02. И хочу заметить, что по моим ощущениям сеть реально стала умнее и адекватнее за этот месяц. Думаю этому активно помогли миллионы пользователей, которые как и я указывают на недостатки в ответах нейросети, что-то просят исправить, уточняют и тп.

Ответить
Развернуть ветку
Слегка Придурковатый

"Вся эта магия – практически одна математика и никаких "искусственных интеллектов"

Врёшь поди.

Ответить
Развернуть ветку
Thom322

Нельзя сравнивать человеческий мозг и ИИ. Мы оцениваем предмет минимум 6 чувствами. А не 1 и 0.

Ответить
Развернуть ветку
Николай Глущенко

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

Ответить
Развернуть ветку
12 комментариев

Комментарий удален модератором

Развернуть ветку
Майнкрафтер Фирамир

Работают это на заводе, а нейросети так, штаны просиживают

Ответить
Развернуть ветку
Алла Юрчак

Прикольно посмотреть на нейросеть изнутри)

Ответить
Развернуть ветку
Yury Tolochko

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

Простые нейронные сети это просто большие математические полиномы, которым в качестве параметров дают входные данные (это всегда числа).

Для примера, f(x, y) = Ax + By + Cxy + D. Здесь A, B, C, D - это те веса. Функции конечно в итоге сложнее, со степенями, логарифрами и т.д. Вроде Ax + By + Cxy + D + Ex^2 + Fy^2 + Gxy^2 + ... Суть обучения сводиться к подбору таких A,B,C,D чтобы f отдавал нужный результат. Что-то вроде решения системы уравнений из школьной программы. Только уравнения сложные :) Если встретите термин градиентный спуск так вот это и есть метод подбора параметров. Сложность функции - это размер сети. Чем больше параметров, степеней и т.д. использовано - тем больше нужно параметров (ака весов) подобрать.

Как передают картинку параметром функции? Разбивают на пиксели и передают каждый пиксель отдельным параметром, значение - числовое значение цвета. Обычно картинку нормализуют перед этим. К примеру приводят к одному размеру вроде 100 на 100 пикселей. Делают черно-белой. Ограничивают кол-во цветов до 24. Делают контрастнее. И т.д. И каждый из этих 10000 пикселей будет отдельным параметром. По крайней мере так в простых сетях.

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

Ответить
Развернуть ветку
Дмитрий Горбачёв

только один вопрос: что с этой собакой🤣

Ответить
Развернуть ветку
55 комментариев
Раскрывать всегда