Обучение нейронных сетей

МЕНЮ


Главная страница
Поиск
Регистрация на сайте
Помощь проекту
Архив новостей

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2021-02-12 06:14

Как глубокие нейронные сети меняют мир

Что это?

Искусственная нейронная сеть (artificial neural network) — это вычислительное устройство, состоящее из элементарных вычислителей, называемых нейронами. Каждый нейрон имеет несколько входов и один выход.

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

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

Обучить нейронную сеть — это значит так подобрать весовые коэффициенты в памяти всех нейронов, чтобы сеть была способна заданные входные данные преобразовать в нужные выходные результаты. Совокупность таких пар векторов «входной — выходной» образует обучающую выборку (training set). Ее называют также датасетом (dataset), то есть набором данных, или размеченными данными, подразумевая, что для каждого обучающего входного вектора известен правильный выходной результат. 

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

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

Как происходит обучение?

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

Первый шаг — мы должны договориться о том, как измеряется погрешность отдельного предсказания, то есть насколько хорош данный результат для данного входного вектора. Для этого задается функция потерь (loss function), вид которой зависит от конкретной задачи. В задачах классификации предсказываются дискретные значения, в задачах регрессии — непрерывные, и функции потерь для этих двух важных случаев разные. Математическая статистика и машинное обучение выработали десятки и даже сотни разнообразных функций потерь на все случаи жизни. Самая известная — квадратичная, лежащая в основе метода наименьших квадратов, который изобрел Карл Фридрих Гаусс в 1795 году для определения эллиптических орбит планет. Грамотный выбор функции потерь очень важен на практике, так как он влияет на свойства той модели, которая получится в итоге. Например, существуют функции потерь, называемые робастными (robust значит «здравый, разумный»), которые делают процесс обучения нечувствительным к наличию больших, но редких ошибок в исходных данных.  

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

Необязательно оптимизировать целиком всю сумму потерь — достаточно выхватывать объекты из обучающей выборки наугад по одному и для каждого делать небольшое изменение всех параметров, чтобы на этом объекте ответ сети стал чуть лучше. Эта эвристика была придумана Фрэнком Розенблаттом в конце 1950-х годов, на заре развития искусственных нейронных сетей. Позже она воплотилась в методе стохастического градиента (stochastic gradient descent), который сейчас используется в большинстве нейросетевых алгоритмов. 

Можно очень быстро вычислять направление оптимального изменения всех параметров с помощью метода обратного распространения ошибки (back propagation). Суть состоит в том, чтобы при дифференцировании сложной функции сохранять результаты промежуточных вычислений и использовать их многократно. При этом суммарный объем вычислений сокращается в фантастическое число раз, кратное числу параметров сети. Этот метод был придуман в середине 1980-х годов независимо и одновременно тремя коллективами (а как позже выяснилось, десятилетием раньше еще как минимум двумя, но это осталось незамеченным). Появление этого метода растопило льды «зимы искусственного интеллекта» и открыло новые перспективы для применения нейронных сетей. 

Рост сети необязательно ведет к переобучению (overfitting). Довольно долго считалось, что по мере увеличения сложности сети ее параметры начинают подгоняться под конкретную выборку данных, вместо того чтобы восстанавливать закон природы. Переобучение — это вездесущий эффект, который портит жизнь исследователям буквально в каждой задаче машинного обучения. Однако начиная с середины 1990-х годов стали появляться новые техники, снижающие переобучение в сложных моделях: голосование, регуляризация, drop-out, пакетная нормализация и другие. В конце концов переобучение все-таки удалось взять под контроль. 

Чем это интересно для науки?

Глубокие нейронные сети нужны для того, чтобы постепенно, слой за слоем, повышать информативность векторного представления объектов. Хотя концепция глубоких сетей многократно обсуждалась на протяжении всей истории развития искусственного интеллекта, первая по-настоящему успешная глубокая сеть (с восемью слоями) для распознавания объектов на изображениях была предложена в 2012 году Джеффри Хинтоном и его аспирантами. Техники оптимизации к тому времени уже существовали, а новым было то, что сеть обучалась по большим данным — миллиону размеченных изображений коллекции ImageNet — и с использованием параллельных вычислений на видеокартах. 

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

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


Источник: postnauka.ru

Комментарии: