НТЦ по электронным компонентам и современным технологиям. Autex SPb Мы с Вами еще не знакомы ЭМС-EMC-учитесь учитывать ВСЕ
Что Вы ищете
    Главная    Вейвлеты    О фирме    Контакты    Библиотека   

Теория и практика вейвлет-преобразования - Нейронные сети

Deep Learning

В 2017 году впервые на русском языке вышла фундаментальная монография "Глубокое обучение" с эпиграфом Илона Маска. Этот факт отражает вновь возникший интерес к нейронным сетям в последнее десятилетие во всем мире. Apple, Google активно скупают стартапы, работающие в области "deep learning", активно ведутся исследования, проводятся конференции, делаются громкие заявления. Например, обученная нейросеть недавно превзошла человека по верности распознавания дорожных знаков на фотографиях. Наибольшие успехи достигнуты в области распознавания речи, изображений, анализа текстов, задачах регрессии.

Под глубокими нейронными сетями (ГНС) понимают обычно сети, состоящие из нескольких (три и больше) слоев нейронов. Конечно же, каждый слой содержит нелинейные преобразования, иначе несколько слоев можно было бы заменить одним. Так как слоев и нейронов много, обучить такую сеть может быть непросто с точки зрения требуемых вычислительных ресурсов. И здесь на помощь приходят GPU. Вычисления с использованием технологии CUDA позволяют на один-два порядка ускорить обучение ГНС по сравнению с традиционными вычислениями, проводимыми CPU. Ну, а если сравнивать нынешнюю производительность с производительностью сорокалетней давности (прошлый рацвет нейросетей), то становится очевидно, что многие алгоритмы, которые в те времена могли существовать только теоретически, сейчас получили свое практическое воплощение.

Вообще говоря, ГНС - третье поколение нейросетей. Первое поколение нейросетей связано с понятием перцептрона, разработанного Ф.Розенблаттом более 60 лет назад. Десять лет он активно пропагандировал свои идеи, пока не вышла книга "Перцептроны" М.Минского и С.Пейперта. В этой книге была предпринята критика перцептрона и нейросетей вообще, строго математически доказано, что перцептрон невозможно обучить для решения многих классов важных задач. После этой книги многие проекты, связанные с нейросетями, закрылись. Вскоре Ф.Розенблатт утонул, катаясь на яхте. Существует ли причинно-следственная связь между разгромной критикой дела всей жизни Ф.Розенблатта и его гибелью (самоубийством?) - неизвестно.

Но уже спустя три года после смерти основоположника, в докторской диссертации советского ученого Галушкина А.И. был описан алгоритм обучения нейросети, связанный с обратным распространением ошибки. Независимо от этой работы данный алгоритм был открыт в то же время и на Западе. Так появились нейросети второго поколения, которые, как выяснилось, можно обучать. В мире вновь появился интерес к нейросетям, но в основном в теоретической области.

И только бурное развитие вычислительной техники позволило создать ГНС, которые решают уже практические задачи. Конечно, за прошедшие десятилетия разработаны новые алгоритмы обучения, но "хайп" deep learning`a связан, все же больше с наличием доступных вычислителей.

Трудно сказать, каково будущее ГНС - являются ли они "калифом на час" или при их помощи действительно будет сделан технологический прорыв. Один из наиболее ярких исследователей ГНС является праправнуком самого Джорджа Буля, который думал, что его алгебра никогда не получит практического применения. Нельзя исключать, что вклад в науку и практику потомка будет не меньшим, чем вклад его прославленного предка.

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

Немаловажным фактором, стимулирующим изучение ГНС, является то, что возникающие идеи и гипотезы можно немедленно попробовать на практике. В этом помогают многочисленные библиотеки программного кода, созданные энтузиастами и крупными фирмами. Например, хорошая библиотека Neural Network Toolbox имеется в Matlab, причем вычисления можно делать как на CPU, так и на GPU. Но Matlab дорого стоит, а существует немало кода open source, который предоставляется бесплатно в соответствии с той или иной лицензионной политикой (Apache, GPL и т.д.). Также в Сети имеется достаточно наборов данных, на которых можно оттестировать и отладить свою ГНС.

Мы решили собрать на страничке некоторые книги по нейросетям, библиотеки deep learning, и ссылки на наборы данных. Надеемся, что эти материалы помогут отечественным специалистам в создании российских интеллектуальных продуктов.

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

36 материалов о нейросетях: книги, статьи и последние исследования

и здесь: Что читать о нейросетях

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

I. Книги на русском языке

Нейронные сети: полный курс. 2-е изд. с примерами - [Книга] [Примеры к книге]
Хайкин C. - 2006, 1102с.
Комментарии: Достаточно сложная для восприятия (иногда благодаря переводу) книга известного специалиста. Отдельно размещены примеры из книги.
Теория нейронных сетей
Галушкин А.И. - 2000, 416с.
Комментарии: Книга одного из основоположников нейронных сетей, к сожалению, умершего 08.11.2016. Александр Иванович работал до последних дней, так и не увидел вышедшей в 2017 году своей новой книи по нейросетям с предисловием самого Лотфи Заде
Самоорганизующиеся карты
Кохонен Т. - 2014, 655с.
Комментарии: Описана разработанная автором одна из наиболее популярных нейросетевых архитектур, ориентированная на обучение без учителя. Приведены математические основы, описаны пакеты программ и даже аппаратные реализации карт
Основные концепции нейронных сетей
Каллан Р. - 2001, 287с.
Комментарии: Вполне доступное введение в нейросети
Нейронные сети, генетические алгоритмы и нечеткие системы
Рутковская Д., Пилиньский М., Рутковский Л. - 2006, 383с.
Комментарии: В книге польских исследователей рассмотрены нейронечеткие сети, использование эволюционных алгоритмов в нейросетях
Нейронные сети. Основные модели
Заенцев И.В. - 1999, 76с.
Комментарии: Краткое учебное пособие по нейронным сетям
Нечёткая логика и искусственные нейронные сети
Круглов В.В., Дли М.И., Голунов Р.Ю. - 2001, 226с.
Комментарии: В книге, в том числе, рассмотрена Neural Network Toolbox (правда, для старой уже теперь версии Matlab 5.3)
Организация и использование нейронных сетей (методы и технологии)
Аксенов С.В., Новосельцев В.Б. - 2006, 128с.
Комментарии: Краткий обзор современного (на тот момент) положения дел в области
Адаптивная обработка сигналов
Уидроу Б., Стирнз С. - 1989, 440с.
Комментарии: Хотя в книге не упоминаются нейронные сети, описанные в ней алгоритмы широко применяются в нейросетях
Нейронные сети. Распознавание, управление, принятие решений
Барский А.Б. - 2004, 176с.
Комментарии: Хорошо иллюстрированная научно-популярная книга. Рассмотрены различные области применения нейросетей

II. Книги на английском языке

Adaptive Filter Theory. Third Edition
Haykin S. - 2004, 990с.
Комментарии: Эта монография не переведена на русский язык, несмотря на то, что на Западе выдержала 4 издания

III Ссылки на программное обеспечение

  1. Theano – CPU/GPU symbolic expression compiler in python (from MILA lab at University of Montreal)
  2. Torch – provides a Matlab-like environment for state-of-the-art machine learning algorithms in lua (from Ronan Collobert, Clement Farabet and Koray Kavukcuoglu)
  3. Pylearn2‚ – Pylearn2 is a library designed to make machine learning research easy.
  4. Blocks – A Theano framework for training neural networks
  5. Tensorflow‚ –‚ TensorFlowв„ў is an open source software library for numerical computation using data flow graphs.
  6. MXNet‚ – MXNet is a deep learning framework designed for both efficiency and flexibility.
  7. Caffe -Caffe is a deep learning framework made with expression, speed, and modularity in mind.Caffe is a deep learning framework made with expression, speed, and modularity in mind.
  8. Lasagne – Lasagne is a lightweight library to build and train neural networks in Theano.
  9. Keras– A theano based deep learning library.
  10. Deep Learning Tutorials – examples of how to do Deep Learning with Theano (from LISA lab at University of Montreal)
  11. Chainer‚ – A GPU based Neural Network Framework
  12. Matlab Deep Learning‚ – Matlab Deep Learning Tools
  13. CNTK – Computational Network Toolkit – is a unified deep-learning toolkit by Microsoft Research.
  14. MatConvNet‚ – A MATLAB toolbox implementing‚ Convolutional Neural Networks‚ (CNNs) for computer vision applications. It is simple, efficient, and can run and learn state-of-the-art CNNs.
  15. DeepLearnToolbox – A Matlab toolbox for Deep Learning (from Rasmus Berg Palm)
  16. BigDL. A distributed open-source Apache Spark deep learning library designed for efficient scale-out to multiple nodes. CPU-optimized via MKL. Scala and Python support. (Developed and supported by Intel Corp). https://software.intel.com/bigdl. https://github.com/intel-analytics/BigDL
  17. Cuda-Convnet – A fast C++/CUDA implementation of convolutional (or more generally, feed-forward) neural networks. It can model arbitrary layer connectivity and network depth. Any directed acyclic graph of layers will do. Training is done using the back-propagation algorithm.
  18. Deep Belief Networks. Matlab code for learning Deep Belief Networks (from Ruslan Salakhutdinov).
  19. RNNLM– Tomas Mikolov’s Recurrent Neural Network based Language models Toolkit.
  20. RNNLIB-RNNLIB is a recurrent neural network library for sequence learning problems. Applicable to most types of spatiotemporal data, it has proven particularly effective for speech and handwriting recognition.
  21. matrbm. Simplified version of Ruslan Salakhutdinov’s code, by Andrej Karpathy (Matlab).
  22. deeplearning4j– Deeplearning4J is an Apache 2.0-licensed, open-source, distributed neural net library written in Java and Scala.
  23. Estimating Partition Functions of RBM’s. Matlab code for estimating partition functions of Restricted Boltzmann Machines using Annealed Importance Sampling (from Ruslan Salakhutdinov).
  24. Learning Deep Boltzmann Machines Matlab code for training and fine-tuning Deep Boltzmann Machines (from Ruslan Salakhutdinov).
  25. The LUSH programming language and development environment, which is used @ NYU for deep convolutional networks
  26. Eblearn.lsh is a LUSH-based machine learning library for doing Energy-Based Learning. It includes code for “Predictive Sparse Decomposition” and other sparse auto-encoder methods for unsupervised learning. Koray Kavukcuoglu provides Eblearn code for several deep learning papers on this page.
  27. deepmat– Deepmat, Matlab based deep learning algorithms.
  28. MShadow‚ – MShadow is a lightweight CPU/GPU Matrix/Tensor Template Library in C++/CUDA. The goal of mshadow is to support efficient, device invariant and simple tensor library for machine learning project that aims for both simplicity and performance. Supports CPU/GPU/Multi-GPU and distributed system.
  29. CXXNET‚ – CXXNET is‚ fast, concise, distributed deep learning framework based on MShadow. It is a lightweight and easy extensible C++/CUDA neural network toolkit with friendly Python/Matlab interface for training and prediction.
  30. Nengo-Nengo is a graphical and scripting based software package for simulating large-scale neural systems.
  31. Eblearn is a C++ machine learning library with a BSD license for energy-based learning, convolutional networks, vision/recognition applications, etc. EBLearn is primarily maintained by Pierre Sermanet at NYU.
  32. cudamat is a GPU-based matrix library for Python. Example code for training Neural Networks and Restricted Boltzmann Machines is included.
  33. Gnumpy is a Python module that interfaces in a way almost identical to numpy, but does its computations on your computer’s GPU. It runs on top of cudamat.
  34. The CUV Library (github link) is a C++ framework with python bindings for easy use of Nvidia CUDA functions on matrices. It contains an RBM implementation, as well as annealed importance sampling code and code to calculate the partition function exactly (from AIS lab at University of Bonn).
  35. 3-way factored RBM and mcRBM is python code calling CUDAMat to train models of natural images (from Marc’Aurelio Ranzato).
  36. Matlab code for training conditional RBMs/DBNs and factored conditional RBMs (from Graham Taylor).
  37. mPoT is python code using CUDAMat and gnumpy to train models of natural images (from Marc’Aurelio Ranzato).
  38. neuralnetworks is a java based gpu library for deep learning algorithms.
  39. ConvNet is a matlab based convolutional neural network toolbox.
  40. Elektronn is a deep learning toolkit that makes powerful neural networks accessible to scientists outside the machine learning community.
  41. OpenNN is an open source class library written in C++ programming language which implements neural networks, a main area of deep learning research.
  42. NeuralDesigner ‚ is an innovative deep learning tool for predictive analytics.
  43. Theano Generalized Hebbian Learning.
  44. Apache Singa is an open source deep learning library that provides a flexible architecture for scalable distributed training. It is extensible to run over a wide range of hardware, and has a focus on health-care applications.
  45. Lightnet‚ ‚ is a lightweight, versatile and purely Matlab-based deep learning framework. The aim of the design is to provide an easy-to-understand, easy-to-use and efficient computational platform for deep learning research.
  46. SimpleDNN is a machine learning lightweight open-source library written in Kotlin whose purpose is to support the development of feed-forward and recurrent Artificial Neural Networks.

Что Вы ищете
    Главная    Вейвлеты    О фирме    Контакты    Библиотека