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.

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

 

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
78 Комментариев
  • 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. ну если честно, тут большая путаница, что есть машин лёрнинг, а что нет. если считать что всё что накапливает состояние в процессе работы методом проб и ошибок = машин лёрнинг, то моя программа — именно лёрнинг. и она одинаково легко решает и вашу оригинальную задачу. и задачу которую я придумал.

                    а вот человек, сдаётся мне, от второй задачи легко опухнет.
  • Якуб Larnik
    05 августа 2024, 03:49
    Ребят, всем мира и добра! Я полный профан в плане нейросетей…
  • Якуб Larnik
    05 августа 2024, 03:51
     Кто хорошо разбирается отпишитесь, например нейросеть Аиголова https://aigolova.ru/ заслуживает внимания? Или это просто детская развлекаловочка?! Заранее благодарю за ответы. Ну, на всякий пожарный случай.

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

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