Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.80.143.34] |
|
Сообщ.
#1
,
|
|
|
всем привет. смотрю раздел не особо популярен, но все же вопрос именно сюда, возможно кто-то и увидит и ответит. ну либо админ перенесет куда надо )
собственно в машинном обучении я ноль. но для общего развития решил почитать без углубления прям в дебри. но сразу наткнулся на ряд вопросов попробую их описать... во всех статьях "для чайников" я встречаю описание типа как тут https://geektimes.ru/post/277088/ т.е. расписывается так, будто мы сами программируем каждый нейрон. назначаем ему какаую-то задачу. на практике же все выглядит так: берем циклы, фигачим N нейронов в N слоях, наугад (или после сложных предварительных вычислений) указываем функцию возбуждения и т.д рандомно ставим веса и дальше учим-учим-учим. отсюла вопрос первый: как на самом деле? или имеет место быть как ручное назначение буквально каждого нейрона к каждой опции так и "кинули сеть, обучили, посмотрели что не так, поменяли конфигурацию и обучили снова, и так пока не получится что надо"? и второй вопрос: на что влияет количество нейронов в слое и количество слоев? и как оно выбирается? я так понимаю что количество слоев влияет на глубину дерева решений? или я не прав? собственно вроде как и то и то влияет на обучаемость сети (недо или пере). но как? допустим рассмотрим простую задачу распознавания букв. получаем на вход картинку 10на20 пикселей. соотвественно будем делать 200 входных нейронов. и вроде как 33 выходных (по количеству букв). что же будет не скрытом слое? сколько слоев? на что они повлияют? сперва я думал что и нейронов в скрытом слое должно быть тоже 33 в один слой, т.к каждый будет "помнить" свою букву. но обучаться этим буквам они будут сами. но по факту можно обойтись и 5ю, и 500. а если я захочу чтобы распознавался еще и цвет? что мне делать? добавлять нейроны в слой? или слои? вобщем если кто-то может вкратце объяснить или кинуть не талмут, а что-то краткое - буду рад почитать. спасибо |
Сообщ.
#2
,
|
|
|
root2lexS
Цитата root2lexS @ т.е. расписывается так, будто мы сами программируем каждый нейрон. назначаем ему какаую-то задачу. Ручное обучение было в 60-тых годах когда только изобрели нейронные сети. В частности однослойный Перцептро. Потом когда открыли обратное распространение ошибок в ручную сеть не настраивали, так как и так хватает забот. Правда со структурой сети и способом обучением приходится колдовать и подбирать их вручную для получения лучшего результата. В теории НС очень много импиреки. Организация и способ обучения подбирается вручную методом проб и ошибок. Есть и теория вполне обоснованная математически. Но всё сводятся к тому что способ обучения и структуру сети подбирает человек методом проб и ошибок. Для каждой из задач проводятся конкурсы. Тем самым ищется лучший способ организации сети: ANN, RNN, CNN. Цитата root2lexS @ и второй вопрос: на что влияет количество нейронов в слое и количество слоев? и как оно выбирается? я так понимаю что количество слоев влияет на глубину дерева решений? или я не прав? Дерево решений это альтернативная технология. То и то занимается разбиения входного множества данных на классы. Если вы знаете математику, то 1 слойная сеть представляет собой матрицу. А матрица есть решение системы линейных уравнений - каждая линия разбивает входное множество на классы. С точки зрения теории оптимизации любую задачу мы можем линеаризовать. Другими словами достаточно 1 слоя и МНК для решения системы линейных уравнений. Выходит что слои это просто надувательство, пшик? Но есть два НО. 1. Не все задачи сводятся к линейным. 2. Входные данные надо размножить - можно просо скопировать. А можно сделать входной слой который будет размножать данные на выходной слой. И того имеем 2 слоя. 2 слоя как-то не красиво. Все мечтают о 3-х мерной сети. Поэтому делают 3-5 слоев. Только вот метод обратного распространения ошибки затыкается на большом числе слоёв. И плюс специфика у метода обратного распространения ошибки, что ему нужно несколько слоёв. Зато ему на смену пришёл автокодировщик. Когда когда от слоя к слою уменьшается число нейронов в промежуточном слое. Есть ещё ряд разновидностей со стекируемыми нейронными сетями, когда убранные нейроны восполняются. Цитата root2lexS @ допустим рассмотрим простую задачу распознавания букв. получаем на вход картинку 10на20 пикселей. соотвественно будем делать 200 входных нейронов. и вроде как 33 выходных (по количеству букв). что же будет не скрытом слое? сколько слоев? на что они повлияют? В 2000-году в распознавание рукописных букв совершили скачок так называемые корреляционные нейронные сети. Там всё просто первый слой сжимает по горизонтали и вертикали в 2 раза. Затем припомощи математического аппарата "свёртки" пиксели смещаются в бок либо гасятся и засвечиваются - тем самым свёртка корректирует возможные локальные возмущения, искажении формы, шумы. Затем ещё сжимается в 2 раза. А после снова корректируются искажения. А затем когда в сжатие дошли до придела применяется классическая ANN. По сути разновидность автокодировщика, только закодированного вручную. Цитата root2lexS @ что мне делать? добавлять нейроны в слой? Добавить нейроны. Цитата root2lexS @ собственно вроде как и то и то влияет на обучаемость сети (недо или пере). но как? Почитайте: http://www.ccas.ru/voron/download/NeuralNets.pdf |
Сообщ.
#3
,
|
|
|
Pavia спасибо за подробный развернутый ответ.
Цитата Pavia @ 1 слойная сеть представляет собой матрицу. Цитата Pavia @ И того имеем 2 слоя сразу хочу уточнить, как вы считаете слои? встречаю везде по-разному. кто-то счиает входной слой, кто не считает, кто-то считает выходной слой, кто-то нет. я когда говорю об однослойной - подразумеваю 3 слоя, с одним скрытым. т.е вход, скрытый слой с одним слоем внутри, и выход. |
Сообщ.
#4
,
|
|
|
Возможно вам поможет книга элементарное введение в теорию нейронных сетей
|
Сообщ.
#5
,
|
|
|
Цитата Возможно вам поможет книга элементарное введение в теорию нейронных сетей Нет, лучше "Нейронные сети для крайних народов Севера М: 1956г" |