Нейронные сети

Нейронные сети

https://t.me/nuancesprog

Перевод статьи Chris Woodford: Neural networks

Что, по вашему мнению, лучше - компьютер или мозг? Опросите людей, если кто-то из них захочет себе мозг наподобие компьютера, скажите им, что у них появился шанс заполучить его. Посмотрите на работу ученых, чем они занимались в течение последних нескольких десятилетий, и вы обнаружите, что большинство из них старались сделать свои компьютеры похожими на мозги! Как? С помощью нейронных сетей - компьютерных программ, собранных из сотен, тысяч или миллионов искусственных клеток мозга, которые учатся и их поведение, на удивление, очень похоже на человеческий мозг. Что такое нейронные сети? Как они работают? Давайте разбираться!

Чем мозг отличается от компьютера?

Часто можно услышать разговоры людей, сравнивающих человеческий мозг и электронный компьютер, и, на первый взгляд, у них есть что-то общее. Обычный мозг содержит около 100 миллиардов маленьких клеток, называемых нейронами (никто не знает точно, сколько их на самом деле, поэтому оценки варьируются от 50 миллиардов до 500 миллиардов). Каждый нейрон состоит из тела клетки с выходящими из нее соединениями: многочисленных дендритов (вход клетки - несущий информацию к телу клетки) и одного аксона (выход клетки - выносящий информацию). Нейроны настолько крошечные, что в одном миллиметре может уместиться около 100 таких тел. (Также стоит отметить, что нейроны составляют только 10 процентов всех клеток в мозге; остальные - глиальные клетки, также называемые нейроглией, поддерживают и защищают нейроны, а также питают их энергией, которая позволяет им работать и расти.) В компьютере аналогом мозговой клетки является крошечное коммутационное устройство - транзистор. Новейшие, микропроцессоры содержат более двух миллиардов транзисторов; даже основной микропроцессор имеет около 50 миллионов транзисторов. Все это размещено на 25 миллиметровом квадрате (меньше почтовой марки)!

Здесь начинается и заканчивается сравнение компьютера и мозга, потому что это две абсолютно разные вещи. Дело не только в том, что компьютеры - это холодные металлические коробки, заполненные двоичным кодом, в то время как мозги теплые, живые, наполненные мыслями, чувствами и воспоминаниями. Основное различие заключается в том, что компьютеры и мозги "думают" совершенно по-разному. Транзисторы в компьютере подключены в, относительно, простых последовательных цепях (каждая из них связана, возможно, с двумя или тремя другими в основных устройствах, известных как логические вентели), в то время как нейроны в мозге плотно соединены между собой сложными, параллельными способами (каждый из них связан примерно с 10 000 "соседей").

Существенная структурная разница между компьютерами (с, возможно, несколькими сотнями миллионов транзисторов, соединенных простым способом) и мозгами (содержащими, в 10 - 100 раз больше, соединенных между собой более сложными способами, клеток мозга) - именно это заставляет их "думать" совсем по-другому. Компьютеры отлично подходят для хранения огромного количества бессмысленной (для них) информации и перестановки ее любым образом в соответствии с точными инструкциями (программами), которые мы заранее в них вводим. С другой стороны, мозги учатся медленно, каким-то окольным методом, часто нуждаются в месяцах или даже годах, чтобы полностью понять какой-то действительно сложный материал. Но, в отличие от компьютеров, они могут спонтанно объединять информацию в поразительные вещи - вот откуда приходит творчество Бетховена или Шекспира.

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

Что такое нейронная сеть?

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

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

Реальные и искусственные нейронные сети

Прежде чем мы продолжим, познакомлю вас с жаргоном. Грубо говоря, запрограммированные нейронные сети называются искусственными (или ANNs). Сделано это для того, чтобы отличать их от реальных нейронных сетей, находящихся внутри нашего мозга. Также нейронные сети иногда называют мыслящими машинами, но в этой статье мы будем использовать термин "нейронная сеть". Всегда используйте его, для обозначения понятия "искусственные нейронные сети."

Из чего состоят нейронные сети?

Типичная нейронная сеть имеет от нескольких десятков до сотен, тысяч или даже миллионов искусственных нейронов, называемых блоками, расположенными в несколько слоев, каждый из которых соединяется с другими слоями с обеих сторон. Некоторые из них, известные как блоки ввода, предназначены для получения различной информации, которую сеть будет пытаться узнать, распознать или иным образом обработать. Другие блоки находятся на противоположной стороне сети и сигнализируют о том, как они реагируют на распознанную информацию. Эти блоки называются блоками выхода. Между входными и выходными блоками находится один или несколько слоев скрытых блоков, которые вместе образуют основную часть искусственного мозга. Большинство нейронных сетей полностью соединены, что означает, что каждый блок соединен с каждым. Соединения между двумя блоками представлены числом, называемым весом, который может быть или положительным, или отрицательным. Чем выше данное число, тем больше влияние одного блока на другой. (Это соответствует тому, как фактические клетки мозга запускают друг друга через крошечные промежутки, называемые синапсами.)

Как обучается нейронная сеть?

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

Для того, чтобы учится, нейронной сети нужно иметь элемент обратной связи. Они, как дети, которым говорят, что они делают правильно и что неправильно. На самом деле, мы все всё время используем обратную связь. Вспомните, когда вы впервые научился играть, например, в боулинг. Когда вы подняли тяжелый шар и катнули его по дорожке, ваш мозг наблюдал за скоростью и траекторией движения шара. Таким образом, он анализировал, как близко вы были к тому, чтобы сбить кегли. В следующий раз, когда наступит ваша очередь, вы вспомните, что сделали неправильно, предпримите меры, и, скорее всего, ваша вторая попытка будет лучше предыдущей. Таким образом, вы использовали обратную связь, чтобы сравнить результат ваших ожиданий с тем, что на самом деле произошло, проанализировали обе ситуации и предприняли какие-то меры. Чем больше разница между предполагаемым и фактическим результатом, тем более радикально вы изменили бы свои ходы.

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

Как это работает на деле?

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

Это не означает, что нейронная сеть может просто "смотреть" на предметы мебели и мгновенно распознавать их; она не ведет себя как человек. Рассмотрим пример, который мы только что привели: сеть на самом деле не смотрит на предметы мебели. Входные сигналы поступают в виде бинарные номера: каждый блок входного сигнала или включен или выключен. Таким образом, если у вас было пять единиц ввода, вы могли бы получить информацию о пяти различных характеристиках разных стульев, используя двоичные (да/нет) ответы. Вопросы могут быть 1) Есть ли у него спинка? 2) имеет ли он верх? 3) оно имеет мягкое основание? 4) можете вы долго, с комфортом, сидеть на нем? 5) вы можете положить много вещей на него? Типичный стул после этого представил бы как Да, Нет, Да, Да, Нет или 10110 в бинарном виде, пока типичная Таблица могла быть Нет, Да, Нет, Нет, Да или 01001. Таким образом, во время фазы обучения сеть просто смотрит на множество чисел, таких как 10110 и 01001, и учится.

Для чего используются нейронные сети?

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

Есть много вариантов использования нейронных сетей в безопасности. Предположим, вы управляете банком с тысячами транзакций в минуту. Вам нужен быстрый автоматизированный способ идентификации любых транзакций, которые могут быть мошенническими. Это именно то, для чего нейронная сеть идеально подойдет. Входными данными будут такие вопросы, как 1) Действительно ли присутствует владелец карты? 2) Был ли использован действительный PIN-код? 3) Имеет пять или более операций с этой картой за последние 10 минут? 4) Используется ли карта в другой стране? и так далее. При достаточном количестве подсказок нейронная сеть может помечать любые подозрительные транзакции, позволяя человеку обратить на них внимание. Аналогичным образом, банк может использовать нейронную сеть, чтобы помочь человеку решить, следует ли предоставлять кредиты людям на основе их прошлой кредитной истории, текущих доходов и трудовом стаже.

Многие вещи, которые мы все делаем каждый день, включают в себя распознавание внешнего вида и использование этих данных для принятия решений, поэтому нейронные сети могут сильно помочь нам. Они могут помочь нам отслеживать информацию о стокмаркете или погоду, управлять системами радиолокационного сканирования, которые автоматически идентифицируют вражеские самолеты или корабли, или даже помочь врачам диагностировать сложные заболевания на основе симптомов. Возможно, нейронные сети работают внутри вашего компьютера или мобильного телефона прямо сейчас. Если вы используете приложения для мобильных телефонов, которые сенсорном экране распознают ваш почерк, они могут использовать простую нейронную сеть, чтобы выяснить, какие символы вы пишете, глядя на то, как вы пишете эти самые символы, какие жесты вы показываете (или порядок, в котором вы делаете их). Некоторые виды программного обеспечения для распознавания голоса также используют нейронные сети. Так же, как и некоторые программы электронной почты, которые автоматически различают подлинные письма и спам. Нейронные сети доказали свою эффективность даже при переводе текста с одного языка на другой. Например, автоматический перевод Google за последние несколько лет все шире использует эту технологию для преобразования слов на одном языке, в эквивалентные слова на другом языке. В 2016 году Google объявил, что использует что-то, что они назвали Нейронным машинным переводом (NMT), чтобы мгновенно конвертировать целые предложения с 55 - 58 процентами вероятности того, что ваш текст будет без ошибок.

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

Report Page