ch5oh
ch5oh личный блог
20 февраля 2020, 20:00

Блеск и нищета ИСКУСТВЕННЫХ нейронных сетей

В связи с хайпом вокруг искуственных нейронных сетей стало интересно: насколько реально обучить сеть или дерево или иную технологию машинного обучения для восстановления вида неизвестной функции по следующим значениям обучающей выборки:

  • x==4 тогда  y==40
  • x==61 тогда  y==80
  • x==117 тогда  y==120

Сеть или дерево должна вычислить значение этой функции для аргумента   x==97853

 

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

 

Если технологии ML не могут дать адекватного ответа на этот вопрос, то могут ли они в принципе быть полезны в торговле?

 

UPDATE 1: За прошедшие несколько часов 2 человека однозначно продемонстрировали способность восстановить вид искомой функции. Что подтверждает простоту озвученной задачки.


Также в голове примерно нарисовалось понимание, как будут решать Деревья. Они разобьют числовую ось на отрезки (точки разбиения насколько понимаю будут выбраны случайным образом) после чего предложат либо кусочно-постоянную либо кусочно-линейную функцию в качестве интерполяции. После чего будут нести всякую чушь и требовать увеличения объёма обучающей выборки. Причем желательно, чтобы в неё входили примеры в том числе в области 100 000.

 

Что же касается основного вопроса данной заметки, то уважаемый ves2010  предлагает считать сетки и ML в целом полезными, ЕСЛИ предварительно грамотно декомпозировать задачу и выделить им ровно тот участок работы, с которым они скорее всего смогут справиться.

 

UPDATE 2: функция следующая.

Посчитать количество цифр в десятичной записи числа и умножить на 40.

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

 

76 Комментариев
  • ves2010
    20 февраля 2020, 20:03
    идея в том, 
    счас граль спалю по пьяни… потом минут через 10 удолю нах

    • _sg_
      20 февраля 2020, 20:14
      ves2010, Пральна.

      Называется это так:
      Декомпозиция -> Оптимизация частей -> Синтез

      На выходе получается Грааль   

      • ves2010
        20 февраля 2020, 22:44
        _sg_, идея в том, что изначально должна быть рабочая архитектура… вообще тема ботостроения — решенный и закрытый вопрос… есть овердокуя разделов математики на тему… кого то этому учили… а кому то приходится изобретать велосипед 
      • ves2010
        20 февраля 2020, 22:42
        ch5oh, все решает ахитектура… т.е бот это не творожок однородный… у него части есть

  • For_post
    20 февраля 2020, 20:39
    ну, конечно, тебя(меня), тупого, обыгрывает нейросеть, а не ты сам себя на кукан сажаешь.
  • товарищ масон
    20 февраля 2020, 20:40
    ничего не понял, но было очень интересно 
      • старый трейдер
        21 февраля 2020, 00:21
        здесь нет ничего сверхъестественного

        ch5oh, ничего сверхъестественного для человека, которого натаскивали на схожих «задачах» (даже не клетчатой бумажке), а  продвинуто обученный ухватит суть мгновенно. Для рынка же нужно сначала самостоятельно поставить задачу, как кто-то здесь уже однажды писал, и лишь потом искать подходы к решению.
        Для второго этапа несколько подрихтованные нейросетки вполне даже годятся.
  • Евгений
    20 февраля 2020, 21:50
    Когда нет своих мозгов придумывают искусственные. Зачем вам нейросеть если рынок ходит по четким правилам. Дебилы на хаях шортят на лоях заходят в бай, на этом строится вся суть.

    А по вашим точкам можно построить бесконечное количество функций, с разными вариантами ответа.
      • Евгений
        21 февраля 2020, 08:31
        ch5oh, для этого нужно иметь 2 глаза и график
  • Vanger
    20 февраля 2020, 23:43
    Дайте ответ уже!
  • Kot_Begemot
    21 февраля 2020, 08:53
    Никак. Ни сети, ни ML не занимаются экстраполяцией.
      • Kot_Begemot
        21 февраля 2020, 11:02
        ch5oh, что вас удивляет, если я только подтвердил ваши слова, высказанные в основном тексте? 
          • Kot_Begemot
            21 февраля 2020, 11:29
            ch5oh, везде написано что сеть восстанавливает регрессию f(x) на интервале данных, но нигде не написано, что она, при этом, ещё и занимается экстраполяцией.

            Нейронщики, чтобы научить сеть экстраполировать, обычно делают предположение о некотором виде масштабируемости данных и перед отправкой вектора x в сеть приводят его к некоторому «нормированному» виду x', чтобы он приближённо напоминал те вектора, на которых сеть обучалась. Без этого — никуда.
              • Kot_Begemot
                21 февраля 2020, 11:57
                ch5oh, если считать, что нейронка это некоторый «чёрный ящик», то её вход, конечно, можно засорять любым мусором — и так сойдёт!

                (Будет настроение, после клиринга отпишу подробнее)
  • Jkrsss
    21 февраля 2020, 09:00
    y=200? Вся проблема в начале., но это еще полбеды — есть еще и скрытые процессы  могут включиться, а могут и нет(история до и после не важно). тип твитов президента сША.
  • П М
    21 февраля 2020, 22:05
    Тут вроде путаница имеется. Ml применяется не когда мало данных и явная зависимость, а когда много данных и неявная зависимость. Вопрос эффективности ml давно не стоит. Это все равно что сомневаться в эволюции или в округлости земли — можно понадувать щеки, но какой смысл.
      • П М
        22 февраля 2020, 01:00
        ch5oh, у людей тоже есть баги и много

      • wrmngr
        22 февраля 2020, 10:51
        ch5oh, именно так. Без хитрожопого оператора вся система превращается в груду мусора.
  • П М
    21 февраля 2020, 22:08
     Тут можно задачку попробовать решить случайными деревьями, примерно как человек это делает — генерация случайных формул и их отсеивание. Но это не машин лернинг как я его понимаю, хотя почему бы и нет назвать его так.
      • П М
        22 февраля 2020, 00:07
        ch5oh, ну вот набросал из того что было..
        результат не совсем верный (что-то там не так считается), но у нас же тупая машина, ей простительно

        ( ( 4 + 4 ) / 2 + 4 / 5 ) + 35 = 40.0: 40

        ( ( 61 + 4 ) / 2 + 61 / 5 ) + 35 = 79.9: 80 

        ( ( 117 + 4 ) / 2 + 117 / 5 ) + 35 = 119.10000000000001: 120

        просто поздно уже, да и силы уже не те в пятницу :)

        считает криво… где-то ошибка у меня, но близко.

        и да, я понимаю, что в задаче целочисленная арифметика

          • П М
            22 февраля 2020, 18:54
            ch5oh, сдаюсь ;)
  • MadQuant
    21 февраля 2020, 23:33
    Философский подтекст состоит в том, что человек в состоянии определить вид этой функции совершенно достоверно и получить нулевую ошибку на валидационной выборке любого размера и сложности.

    Ну для MLя просто мало данных. Если вы дадите ей много данных (хотя бы значения для x от 1 до 10^6, например) — ML тоже может научиться вычислять значения как надо. Опять же, нужен человек, который поможет со структурой задачи — т.е. подскажет, что y кратно 40 только. А совсем без человека-подсказчика на этапе обучения ML и не работает, это вам любой нормальный спец в этом области расскажет.
      • Пафос Респектыч
        22 февраля 2020, 12:29
        ch5oh, компьютер ничего не знает про десятичную запись и что в ней может быть сколько-то цифр. Он вообще числа по циферкам не записывает.

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

        В ML магии нет, инжиниринг фич никто не отменял. Чтобы обучить полезную модель, надо очень внимательно подумать какие ей показывать фичи и ещё что немаловажно — какие таргеты.

        Тогда всё начинает сходиться туда куда нужно, но это нифига не само собой происходит.
          • Пафос Респектыч
            22 февраля 2020, 18:54
            ch5oh, не знаю кто вам такое обещает, наверное он хочет вам что-то продать.

            Подготовить фичи эквивалентно как вы говорите решению задачи только пока фич одна-две. Как только фич становится больше, а зависимость становится сложнее — для поиска приближения этой зависимости нужны методы ML. Но подать на вход алгоритма такие фичи и таргеты, между которыми вообще есть зависимость — это обязанность дата саентиста.
              • Пафос Респектыч
                22 февраля 2020, 21:00
                ch5oh, всех мыслимых фич — это будет 200000 столбцов. Чтобы получилось 200 столбцов полезных фич уже нужен фичё инжиниринг.

                Так где такое обещают-то, пруфы есть? Видосик там или статейка с фамилией? А то я сам как-то не встречал.
                  • Пафос Респектыч
                    22 февраля 2020, 22:18
                    ch5oh, не ну вы накопипастили самую романтическую часть вводных, там же сразу же следующим абзацем говорится, что:

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

                    А дальше надо в зависимости от реальной прикладной задачи выбирать подходящий метод, и дальше длинный список. По идее это всё надо знать хотя бы поверхностно что для чего. Универсальной методы нет (((
                      • Пафос Респектыч
                        22 февраля 2020, 23:15
                        ch5oh, ну не всякий тайм сериес легко зафорекастить. Рынки трудно, потому что шума много а данных мало, нестационарность опять же.

                        Распространённый поп-инструментарий тут практически бессилен, даже если его умело применять и знать теорию, потому что он создавался под другие задачи. Надо или долго дорабатывать напильником или писать своё, и у тех кто берётся тоже далеко не у всех получается.

                        Вообще рынки предсказывать это такая довольно нишевая задача для кучки упоротых, ей не так много народа занимается как может показаться, а грамотного так и того меньше.
      • MadQuant
        22 февраля 2020, 12:31
        ch5oh, для простых задач (типа распознавания цифр или лиц) 99% там, безусловно, есть. Это реально несложно. Вот с прогнозированием временных рядов — в особенности цен — проблемы, именно потому что данные остационарить сложно.
  • Пафос Респектыч
    22 февраля 2020, 14:26
    С точки зрения компьютера, надо по нескольким точкам угадать функцию
    f(x) = 40*ceil(log10(x))

    Таких чудес не бывает )))
      • Пафос Респектыч
        22 февраля 2020, 18:49
        ch5oh, ещё раз, люди угадают если задачу понятно записать. Если же например переписать числа в восьмеричной системе счисления и не сказать об этом — то не угадает никто.

        То есть фича о количестве цифр может и неявно, но присутствует в формулировке задачи, а компьютеру её взять будет неоткуда.

        Как вариант — нужно много точек данных, тогда он может сможет догадаться, но засада в том что на том же рынке много данных взять неоткуда. Поэтому возвращаемся к важности фиче инжиниринга.

        Может кто-то и теханализ умеет делать, несомненно. Первый признак — такой человек сможет сказать что вот тут его скорее всего можно будет сделать, а вот — тут скорее всего нельзя.
  • MS
    22 февраля 2020, 19:08

    UPDATE 2: функция следующая.

    Посчитать количество цифр в десятичной записи числа и умножить на 40.


    А откуда следует, что функция именно такая? Их бесконечное количество.
    Чем эта лучше других?
    Вот машинное обучение по заданным критериям и отвечает на последний вопрос.
    • Пафос Респектыч
      22 февраля 2020, 19:14
      MS, из неявных ограничений на сложность функции в мозгу автора задачи, конечно же это следует. Так-то и параболу можно провести и любую другую степенную функцию, но они отметаются каким-то хитрым критерием оптимизации ))
      • П М
        23 февраля 2020, 13:06
        ch5oh, у вас фора перед ИИ. вы и те двое других решали много (несколько) похожих задач и решили и эту тоже.
        а ИИ для теста вы берёте нулёвую, которая такую ещё никогда не видела.

        люди ведь тоже много косячат. 
    • Jkrsss
      26 февраля 2020, 20:53
      MS, Это довольное просто если знаешь такие понятия как характеристика и мантисса числа. Да и что такое линеаризация.
      • MS
        27 февраля 2020, 17:21
        Jkrsss, а если знаешь что-то другое, то и решение станет другим? Забавно.
        • Jkrsss
          27 февраля 2020, 17:39
          MS, Нет. истина есть  истина. Если истина не истина то это противоречие. Между истиной и противоречией ничего нет. Забавно что это понимает только элита.
          • MS
            27 февраля 2020, 17:53
            Jkrsss, у Вас мышление своеобразное. Выше написано, что нет одной истины.
  • П М
    23 февраля 2020, 13:03
    блин, почитал что за формула...
    ну конечно мой прототип не мог этого сделать.
    потому что __Я__ предусмотрел в нём только операции 

    final Operator[] allOps = {add, sub, mul, div, pow};

    если туда добавить функцию numberCount и определить её как количество цифр, то дерево построится с полпинка

    говорит ли это что-то плохое о самом подходе или «нереальности обучить»?
    ни в малейшей степени.

    вот есть стиральная машина. она делает простую работу — крутит барабан и греет воду.
    или есть посудмоечная машина — крутит поливалку и греет воду.
    они делают дело порой медленее и иногда хуже чем человек.
    но бесполезны ли они?

      • П М
        23 февраля 2020, 14:54
        ch5oh, про не особо нужна — см выше пример про стиралку и посудомойку.
        если мало — возьмите автобус или авто.
        человек умеет ходить. за кой чёрт ему авто? он итак дойдёт.
          • П М
            23 февраля 2020, 16:16
            ch5oh, 
            Если человек стопудово знает, какие фичи вляют на клоуз следующего бара 
            это мягко говоря слишком сильное предположение
              • П М
                23 февраля 2020, 19:44

                ch5oh, я про фичи не говорил. 
                это скорее — список разрешенных операций.
                грубо говоря вот есть программа которая должна научиться играть в шахматы, но вы при программировании «забываете» ей сказать что ферзь может ходить по диагоналям.
                а потом хохочете что она косячит в элементарных вещах.

                нужен, не нужен, это так себе спор, вкусовщина же.

                вашу позицию можно переформулировать (что вы уже сами сделали чуть выше) — если можно обойтись без ML — без него надо/можно/стоит обойтись. понятно, что с этим утверждением спорить сложно и не нужно.

                как я понимаю, человеческое знание работает таким образом, что не всегда всё кристально ясно и понятно. даже людям не всегда «хватает фич».
                и такое в последние годы уже не только в новых науках типа экономики, но и в физике и даже в математике (см Синъити Мотидзуки)

                может и придёт тот день, когда всё станет 42. но пока до него далеко вроде бы.

                PS: что-то туго далась ваша задача. но всё-таки спрограммил. сперерывами на поиграть с детьми, отметить 23 и тп. думаю теперь моя программа сможет найти и более сложные решения, типа:

                X=3; Y=3;
                X=13; Y=65;
                X=511; Y=487;
                X=12345; Y=??? 

                  • П М
                    23 февраля 2020, 22:30
                    ch5oh, я может быть не понятно написал, виноват.
                    вашу функцию я прочёл. и даже комментировал по ней, начиная в 13:03 (вы мне отвечали).

                    я поясню ещё две детали:
                    1. я сделал _другую_ функцию, другую задачу. на основе «фич» из вашей. т.е. все фичи известны: +, -, *, /, pow, число_цифр. 
                    осталось мелочь — показать что программный поиск не нужен.

                    2. ну если честно, тут большая путаница, что есть машин лёрнинг, а что нет. если считать что всё что накапливает состояние в процессе работы методом проб и ошибок = машин лёрнинг, то моя программа — именно лёрнинг. и она одинаково легко решает и вашу оригинальную задачу. и задачу которую я придумал.

                    а вот человек, сдаётся мне, от второй задачи легко опухнет.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн