За последние 24 часа нас посетили 22862 программиста и 1237 роботов. Сейчас ищет 701 программист ...

Нейросеть, которая обучается во сне

Тема в разделе "Беседы", создана пользователем Maputo, 13 мар 2018.

  1. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @abrdabr, но у меня немного другой тип сети. Я как раз предполагаю, что к структуре она должна быть менее чувствительна. Да, первые результаты после внесения корректировок будут другие, но потом сеть должна занять новое устойчивое положение.
    А можно подробнее?
     
  2. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @abrdabr, я просто начал подумывать о такой структуре:

    [​IMG]
    Но тут получается 6 скрытых слоев. В каждом слое по 64 нейрона - всего 512 (~5000 синапсов). Но сколько такая сеть будет обучаться - вопрос. Потому как обучение происходит от входа к выходу. Сначала первый скрытый слой обучится, потом 2й и т.д.
     
  3. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    Ну оч много не скажу, то что помню, могу ошибаться, потом мб покапаюсь в записях, но наврятли.
    1) экспериментально удалось установить что нейросеть с одним скрытым слоем, вне зависимости от количества входных-выходных нейронов имеющая в среднем слое определённое число нейронов показывает лучшие результаты, чем таже сетка с большим числом нейронов. это количество было либо 8? либо 40 либо 96или128, ну то что 40 было это точно. (см. описание выше про +1 нейрон)
    2) далее я приступил к определению оптимального количества слоёв при условии что количество нейронов в каждом слое одинаково, прямой связи не обнаружил, сеть приспасабливалась и результаты были примерно одинаковы
    3) Попытался определить оптимальную форму нейросети типа 10-100-50-25-10 или 10-40-95-40-10 т.е. при одинаковом числе нейронов, зависимость была, пытался создать формулу, дальше экспериментов дело не зашло
    4) и тут я подумал, есть же нейросеть пусть она определяет за меня оптимальную архитектуру нейросети, но моя криворукость не позволила идее развится
    5) затем я подал на входные нейроны не математические данные, а логические, что привело все предыдущие результаты почти в полную непригодность,- некоторые предположения оказались ложными, некоторые не столь впечатляющими. К примеру п1 при логических дынных давал не 0.99 а всего 0.6. и тут я забил на всё это так как я не расчитывал так облажатся с типом входных данных...

    p.s. оптимальное число эпох было равно вроде числу нейронов умноженому на два
    долго, но не обязательно же её обучать методом рандома, можно обучить на примере прошлой нейросети.
     
    Maputo нравится это.
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    про младенца - не верю
     
  5. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @igordata хз на ютубе видос видел, вроде как профессор какой-то выступал
     
  6. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Вообще странно, что такая четкая привязка к конкретному количеству, несмотря на количество входных нейронов. Это может быть связано с дискретностью данных либо особенностями алгоритмов обучения.
    Ну это мне еще предстоит сделать. Потому как большое количество слоев (по моим расчетам) должно давать эффект "эхо" или "резонанс" в более удаленных слоях от входа. И это зависит от пропускной способности (количества нейронов) каждого слоя.
    По сути я разделил процесс обучения на кратковременную и долговременную память. Некоторые веса синапсов со временем стремятся к 0 - это говорит о том, что данная связь может и не нужна нейрону. Общая картина весов (та что на графиках) - это длоговременная память. А мелкие изменения - кратковременная. В какой-то момент общие изменения должны прекратиться и будет работать только кратковременная память. После сна в 50000 итераций нейрон, отслеживающий все игровое поле практически не изменился.
    Так и будет. К тому же эта версия с каждым разом делает игру напряженнее.
     
  7. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Чисто математически архитектуру (по количеству нейронов в слоях) можно было бы разделить на три элементарных типа (например, "линейный", "обобщающий" и "избыточный"). В линейном типе количество нейронов в каждом слое одинаковое и количество возможных состояний слоя тоже. В обобщающих сетях количество нейронов с каждым слоем уменьшается и уменьшается количество состояний каждого слоя - поэтому в них и процесс обучения идет быстрее. Избыточные - постоянное увеличение количества нейронов в каждом последующем слое, за счет чего для полного обучения выходного слоя недостаточно "бесконечного" количества состояний входного слоя. И выходной слой никогда не обучится.
    [​IMG]
    Мне бы хотелось получить нечто подобное 4 архитектуре. Образующийся буфер никогда не обучится и нейроны входящие в состав буферных слоев весьма подвижны. В данном месте сети можно было бы хранить целые понятия. Некое сходство с ассоциативным мышлением.
    А "эхо" или "резонанс" - это волны, которые я нарисовал в первом типе и они же помогают обучать нейроны выходного слоя в 4м типе.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Long-term? С вентилями/гейтами и клеточными состояниями, или простейшей кратковременной затухающей?
    У нейросетей есть такая штука как "переобучение". Грубо говоря, за кучу эпох можно идеально натаскать нейросеть на идеальную аппроксимацию входных данных и идеальное, чуть ли не нулевое схождение. Но, в итоге, окажется, что нейросеть становится дебилом, теряя способность к абстракции и не способна выдать ничего вменяемого на неизвестных ранее входных данных. Как старшеклассник, которого научили сдавать ЕГЭ по математике, вместо того, чтобы научить математике.
    У сеток тоже бывает горе от ума. Избыток нейронов вызывает повышение количества шума в итоговом сигнале.
    Для данной задачи достаточно 1-6-1, просто за глаза.
    У меня на тестах, в свое время, сеточка 1-6-1 на выборке из всего 20+ сетов обучалась определять, больше ли один аргумент второго. В обучающей выборке были только целые положительные числа. В итоге, 1-6-1, и такой малой выборки ей хватило, чтобы работать с отрицательными числами и дробями, которые она отродясь не видела. А на деле, если сверхзапредельные точности не нужны, хватает даже 3 нейронов в скрытом слое. А на 1-2-1 легко поднимается XOR, хоть его и рекомендуют делать с тремя нейронами.

    Пы.Сы фанн веселый, но на нем далеко не уедешь. Рекуррентку на нем строить - тот еще головняк. На keras надо уходить питоновый, вот где правда.
     
  9. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Во время сна стерлась именно кратковременная (простейшая), а долговременная - закрепилась. Но в ней не было умения хорошо играть в реверси.
     
  10. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Для более детального разбора состояния сети и в попытке форсировать обучение проведено около 20-ти турниров между последними версиями сети. В одном турнире участвовало в среднем 12 сетей. Сети выигрывающие в первом туре и снимки сетей победителей второго тура и выше переходили в следующий турнир. При этом я менял настройки "сна" между турами турнира.
    С помощью сна удалось расшатать веса, но каких либо серьезных сдвигов в их относительном изменении в выходном слое не обнаружено. Из-за чего я могу сделать вывод, что сеть в данном режиме достигла своего устойчивого состояния. Но играть так и не научилась.

    Графики изменения весов нейронов нескольких победителей турниров.

    Нейрон на диагонали 7-56 (скрытый слой)
    [​IMG]
    Нейрон на ячейке 56 (выходной слой)
    [​IMG]

    Остальные нейроны вели себя похожим образом. В скрытом слое наблюдались весьма заметные относительные изменения весов, а в выходном слое (в зависимости от настроек "сна") веса равномерно поднимались и опускались.

    Осталось последнее в эксперименте с этой структурой - выключить режим фрагментарной работы сети и проверить как себя сеть поведет в том режиме, в котором и должна работать.
     
  11. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Первые снимки сети после переключения режима работы сети с фрагментарного на полный.
    Нейрон диагонали 7-56:
    [​IMG]
    Нейрон на ячейке 56
    [​IMG]
    Первые две полоски (красная и оранжевая) - веса последних сетей, эволюционировавших при фрагментарном режиме работы сети.
    Вторые две полоски (желтая и салатовая) - веса их потомков после переключения режима работы сети на полный (эволюционировали после 30 и 60 игр).

    Почти на всех нейронах наблюдается равномерное падение весов, за редким исключением. Например, у нейрона скрытого слоя, отслеживающего сегмент 5х5 с центром в ячейке 28 общий рост весов:

    [​IMG]
    Видимо это остаточные сдвиги после снов в турнирах.

    С этих двух сетей будет получено новое поколение, работающее в другом режиме.
     
  12. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    При попытке использовать сеть с 6-ю скрытыми слоями использовал режим самообучения. Т.е. без моего участия - все в турнирах. За целый день прокачать удалось до третьего слоя. Но весьма полезный опыт получил при наблюдении за развитием сети.

    Процесс изменения весов нейронов (по 4 синапса), стоящих друг за другом в разных слоях

    1й скрытый слой:
    [​IMG]
    2й скрытый слой:
    [​IMG]
    3й скрытый слой:
    [​IMG]
    4й скрытый слой:
    [​IMG]
    5й скрытый слой:
    [​IMG]
    6й скрытый слой:
    [​IMG]
    выходной слой:
    [​IMG]

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

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Maputo как ты графики получаешь?
     
  14. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    @abrdabr, с помощью обычных GD функций рисую линии и пишу текст.
    Типа таких
    PHP:
    1. ...
    2. public function set_block_line($x, $y, $color = 'red', $weight = 1, $delta = 0)
    3.     {
    4.         $pos = $this->position($x, $y);
    5.         $p0 = $this->position(0, 0)['y'] - 1;
    6.         $w = $weight * $this->scale_x * 0.96;
    7.         $cx = $pos['x'] - $this->scale_x * 0.5 + $w * ($delta + 0.5) + 1;
    8.         $this->line($cx, $p0, $cx, $pos['y'], $color, $w);
    9.     }
    10. ...
    11.  
    12. private function line($x1, $y1, $x2, $y2, $color = 'black', $width = 1)
    13.     {
    14.         imagesetthickness($this->img, ceil($width));
    15.         imageline($this->img, (int)$x1, (int)$y1, (int)$x2, (int)$y2, $this->colors[$color]);
    16.         imagesetthickness($this->img, 1);
    17.     }
    18. ...
     
  15. abrdabr

    abrdabr Новичок

    С нами с:
    28 янв 2017
    Сообщения:
    774
    Симпатии:
    65
    @Maputo ах тыж, я думал какойнить специальный софт есть. я то обычно текстовые данные читал...
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.230
    Симпатии:
    1.715
    Адрес:
    Молдова, г.Кишинёв
    igordata нравится это.
  17. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173
    Профессор или нет, но нейробиолог (5 мин 23 сек)

    тут несколько иначе описывается процесс. До двух лет хаотичный рост связей, а потом их уменьшение.
     
  18. Васяня

    Васяня Активный пользователь

    С нами с:
    2 окт 2016
    Сообщения:
    238
    Симпатии:
    32
    Адрес:
    Россия, Приморский край, г. Находка.
    Я один не понял как играть?
     
  19. Maputo

    Maputo Активный пользователь

    С нами с:
    30 июл 2015
    Сообщения:
    1.136
    Симпатии:
    173