Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2014-05-19

Neural Networks


После линейнойрегрессии была логистическаярегрессия. А потом начались нейросети — Neural Networks.

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

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

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

В компьютерной модели все довольно просто и сводится к логистической регрессии. Чтобы получить выходной сигнал с одного нейрона (юнита) надо вычислить, кто догадается? Да, полином! В форме логистической регрессии. Переменными для этого полинома будут значения сигналов с тех нейронов (юнитов), которые связаны с этим нашим одним. А коэффициентами полинома для этих переменных будут весовые коэффициенты связей между юнитами. И вот так, через полиномы (завернутые в сигмоидную функцию) входные сигналы постепенно преобразуются к выходным. В простейшем случае, это один выходной юнит, выдающий 0 или 1 (с некоторой вероятностью, конечно, может выдать и 0.77 и 0.12).

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

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

Как-то так.


Чуть не забыл, для удобства сеть представляют слоями. Входной слой — набор нейронов (юнитов) получающих входные параметры. Выходной слой — набор юнитов с которых снимается решение, выходной сигнал. А между ними произвольное количество слоев с произвольным количеством юнитов. Юниты предыдущего (левого слоя) передают сигнал юнитам следующиго (правого) слоя. Левый — правый, это если рисовать юниты в виде грида, колонками юнитов. Каждый юнит правого слоя получает сигнал от всех юнитов левого слоя. И все расчеты алгоритмов ведутся по слоям. Forward Propagation — передача сигнала от входа к выходу, вычисление задачи для которой построена сеть. Back Propagation — передача сигнала от выхода ко входу, обучение сети, подбор коэффицентов.


original post http://vasnake.blogspot.com/2014/05/neural-networks.html


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

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)