На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела
1. Название темы должно отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишите свою проблему, тем быстрее получите вразумительный совет

Модераторы: esperanto
  
> вопросы новичка по нейросетям, слои и нейроны
    всем привет. смотрю раздел не особо популярен, но все же вопрос именно сюда, возможно кто-то и увидит и ответит. ну либо админ перенесет куда надо :))
    собственно в машинном обучении я ноль. но для общего развития решил почитать без углубления прям в дебри. но сразу наткнулся на ряд вопросов
    попробую их описать...
    во всех статьях "для чайников" я встречаю описание типа как тут https://geektimes.ru/post/277088/
    т.е. расписывается так, будто мы сами программируем каждый нейрон. назначаем ему какаую-то задачу.
    на практике же все выглядит так: берем циклы, фигачим N нейронов в N слоях, наугад (или после сложных предварительных вычислений) указываем функцию возбуждения и т.д рандомно ставим веса и дальше учим-учим-учим.
    отсюла вопрос первый: как на самом деле? или имеет место быть как ручное назначение буквально каждого нейрона к каждой опции так и "кинули сеть, обучили, посмотрели что не так, поменяли конфигурацию и обучили снова, и так пока не получится что надо"?
    и второй вопрос: на что влияет количество нейронов в слое и количество слоев? и как оно выбирается? я так понимаю что количество слоев влияет на глубину дерева решений? или я не прав? собственно вроде как и то и то влияет на обучаемость сети (недо или пере). но как?
    допустим рассмотрим простую задачу распознавания букв. получаем на вход картинку 10на20 пикселей. соотвественно будем делать 200 входных нейронов. и вроде как 33 выходных (по количеству букв). что же будет не скрытом слое? сколько слоев? на что они повлияют? сперва я думал что и нейронов в скрытом слое должно быть тоже 33 в один слой, т.к каждый будет "помнить" свою букву. но обучаться этим буквам они будут сами. но по факту можно обойтись и 5ю, и 500. а если я захочу чтобы распознавался еще и цвет? что мне делать? добавлять нейроны в слой? или слои?
    вобщем если кто-то может вкратце объяснить или кинуть не талмут, а что-то краткое - буду рад почитать. спасибо
    Сообщение отредактировано: root2lexS -
    Язык формирует наш способ мышления и определяет, о чем мы можем мыслить. © Б.Л. Ворф
    sev-staff-bull.org.ua
      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
      Правильный обед должен состоять из 5 блюд приготовленных из 33 ингредиентов.
        Pavia спасибо за подробный развернутый ответ.

        Цитата Pavia @
        1 слойная сеть представляет собой матрицу.

        Цитата Pavia @
        И того имеем 2 слоя

        сразу хочу уточнить, как вы считаете слои? встречаю везде по-разному. кто-то счиает входной слой, кто не считает, кто-то считает выходной слой, кто-то нет. я когда говорю об однослойной - подразумеваю 3 слоя, с одним скрытым. т.е вход, скрытый слой с одним слоем внутри, и выход.
        Язык формирует наш способ мышления и определяет, о чем мы можем мыслить. © Б.Л. Ворф
        sev-staff-bull.org.ua
          Возможно вам поможет книга элементарное введение в теорию нейронных сетей
          Microsoft SDE -> Intel algorithmist -> Skype SDET 2
          B.Sc - > M.Sc -> B.Psy -> Scrum Master -> Research Assistent

          https://www.youtube.com/user/igorkle1?feature=mhee
          http://igor-eta.livejournal.com/
          http://www.idea2site.com/
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script Execution time: 0,0850 ]   [ 14 queries used ]   [ Generated: 18.10.18, 05:44 GMT ]