Рубрика «нейронные сети» - 40

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

История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

Моделирование нейронов

Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.
Как работает мозг? - 1

По аналогии с устройством компьютера, абсолютное большинство этих нейронов нужны для скорости и эффективности работы, для устойчивости ко сбоям, и т.п.; но основные принципы устройства мозга так же невозможно обнаружить при помощи микроскопа, как невозможно обнаружить счётчик команд, рассматривая под микроскопом микропроцессор. Поэтому более плодотворный подход — попытаться понять устройство мозга на самом низком уровне, на уровне отдельных нейронов и их колонок; и затем, опираясь на их свойства — попытаться предположить, как мог бы работать мозг целиком. Примерно так пришельцы, поняв работу логических вентилей, могли бы со временем составить из них простейший процессор, — и убедиться, что он эквивалентен по своим способностям настоящим процессорам, даже хотя те намного сложнее и мощнее.
Читать полностью »

Мотивации пост.

Давайте изобретать велосипеды - 1

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

И правда, есть же матлаб. Любой может в два движения создать и обучить стандартную сетку одним из готовых стандартных и уже оптимизированных алгоритмов, обучить какой-нибудь страшно стандартной задаче классификации и всё у него будет хорошо. Тем более это актуально, учитывая что с 70-ых годов прошлого века в деле обратного распостранения ошибки не произошло ничего принципиально нового. А новые сетки уже тоже есть в матлабе.

В этом посте я постараюсь показать, почему нужно изобретать велосипед.
Читать полностью »

Мотивация

В данной статье вы познакомитесь c применением deep learning на практике. Будет использован фреймворк Caffe на датасете SVHN.

Deep Learning. Этот buzz word уже давно звенит в ушах, но попробовать его на практике никак не удавалось. Подвернулся удобный случай это исправить! На новогодние праздники был назначен контест на kaggle по распознаванию номеров домов в рамках курса по анализу изображений.
Читать полностью »

Ансамбль синапсов – структурная единица нейронной сети - 1

В мае прошлого года сотрудники лаборатории глубокого обучения Гугла и учёные из двух американских университетов опубликовали исследование «Intriguing properties of neural networks». Статья о нём вольно пересказывалась здесь на Хабре, и само исследование также критиковалось специалистом из ABBYY.

Гугловцы в результате своих исследований разочаровались в способностях нейронов сети распутывать признаки входных данных и стали склоняться к мысли, что нейронные сети не распутывают синтаксически значимые признаки по отдельным структурным элементам, а хранят их во всей сети в целом как в голограмме. В нижней части иллюстрации к этой статье чёрно-белыми я привёл карты активации 29, 31 и 33-его нейронов сети, которую обучил рисовать картинку. То, что тушка птицы без головы и крыльев, изображаемая для примера 29-ым нейроном, покажется людям синтаксически значимым признаком гугловцы считают всего лишь ошибкой интерпретации наблюдателя.

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

Описание проблемы и постановка задачи

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

В данной статье мы рассмотрим эксперимент с обучением и тестированием модели в текущей неоднозначной экономической ситуации при помощи нейро-нечетких сетей.

image
Читать полностью »

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

Содержание:

Глава 1: Схемы реальных значений

Часть 1:

   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:

         Стратегия №2: Числовой градиент

Часть 3:

         Стратегия №3: Аналитический градиент

Часть 4:

      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:

         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:

      Становимся мастером обратного распространения ошибки

Глава 2: Машинное обучение

Часть 7:

      Бинарная классификация

Часть 8:

      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:

      Обобщаем SVM до нейронной сети

Часть 10:

      Более традиционный подход: Функции потерь

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

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

Содержание:

Глава 1: Схемы реальных значений

Часть 1:

   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:

         Стратегия №2: Числовой градиент

Часть 3:

         Стратегия №3: Аналитический градиент

Часть 4:

      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:

         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:

      Становимся мастером обратного распространения ошибки

Глава 2: Машинное обучение

Часть 7:

      Бинарная классификация

Часть 8:

      Обучение сети на основе метода опорных векторов (SVM)

Часть 9:

      Обобщаем SVM до нейронной сети

Интересен тот факт, что SVM является всего лишь отдельным видом очень простой схемы (схемы, которая вычисляет score = a*x + b*y + c, где a,b,c являются весовыми функциями, а x,y представляют собой точки ввода данных). Его можно легко расширить до более сложных функций. Например, давайте запишем двухслойную нейронную сеть, которая выполняет бинарную классификацию. Проход вперед будет выглядеть следующим образом:
Читать полностью »

Содержание:

Глава 1: Схемы реальных значений

Часть 1:

   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:

         Стратегия №2: Числовой градиент

Часть 3:

         Стратегия №3: Аналитический градиент

Часть 4:

      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:

         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:

      Становимся мастером обратного распространения ошибки

Глава 2: Машинное обучение

Часть 7:

      Бинарная классификация

Часть 8:

      Обучение сети на основе метода опорных векторов (SVM)

В качестве конкретного примера давайте рассмотрим SVM. SVM – это очень популярный линейный классификатор. Его функциональная форма имеет именно такой же вид, как я описывал в предыдущем разделе — f(x,y)=ax+by+c. На данном этапе, если вы видели описание SVM, вы наверняка ожидаете, что я буду определять функцию потерь SVM и погружаться в пояснения свободных переменных, геометрических понятий больших полей, ядер, двойственности и пр. Но здесь я бы хотел воспользоваться другим подходом.
Читать полностью »

Содержание:

Глава 1: Схемы реальных значений

Часть 1:

   Введение   
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:

         Стратегия №2: Числовой градиент

Часть 3:

         Стратегия №3: Аналитический градиент

Часть 4:

      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:

         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:

      Становимся мастером обратного распространения ошибки

Глава 2: Машинное обучение

Часть 7:

      Бинарная классификация

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

Содержание

Часть 1:

   Введение
   Глава 1: Схемы реальных значений
      Базовый сценарий: Простой логический элемент в схеме
      Цель
         Стратегия №1: Произвольный локальный поиск

Часть 2:

         Стратегия №2: Числовой градиент

Часть 3:

         Стратегия №3: Аналитический градиент

Часть 4:

      Схемы с несколькими логическими элементами
         Обратное распространение ошибки

Часть 5:

         Шаблоны в «обратном» потоке 
      Пример "Один нейрон"

Часть 6:

      Становимся мастером обратного распространения ошибки

Со временем вы сможете намного эффективнее писать обратные проходы, даже для сложных схем и для всего сразу. Давайте немного попрактикуемся в создании обратного распространения ошибки на нескольких примерах. В дальнейшем мы просто будем использовать такие переменные, как a,b,c,x, а их градиенты назовем da,db,dc,dx соответственно. Опять же, мы представляем переменные в качестве «прямого потока», а их градиенты в качестве «обратного потока» вдоль каждой линии. Нашим первым примером был логический элемент *:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js