А вот про нейронные сети, ИИ и т.д. [Опрос]

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


Я не понаслышке знаком с нейронными сетями, участвовал в некоторых проектах, «конструировал», обучил и настроил уже более десятка различных flow с использованием последних в разных областях применения (при этом перепробовав множество различных движков и типов сетей от простейших перцептронов до самоорганизующихся монстров). Кроме того я лично знаком с некоторым количеством людей, активно проектирующих и использующих нейросети в повседневности, и пока что ни от одного из них не слышал про сногсшибательный прорыв в использовании нейросетей (что касается интеллекта последних).
Т.е. я думаю, что в состоянии озвучить удаленность от реалий вышеприведенных высказываний.


Написать статью (и опрос) хотел уже довольно давно, но все как-то руки не доходили. А после очередного вопроса-предложения по е-майлу «натравите же нейронную сеть» на проблему из моей прошлой статьи «Мониторинг лог-журналов: Такой уязвимый лог…», все-таки понял — нет — надо писать.


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


Хотя вдруг это я таки нещадно отстал от жизни…


Итак, для начала озвучим про или скорее контра использования нейронных сетей, что касается ее «интеллекта»:


  • нейросеть «программируют», чтобы решать узконаправленные задачи, т.е. сеть распутывает только строго-определенные, семантически значимые для нее признаки;
  • способность нейросети распутывать признаки входных данных напрямую зависит от качества входных данных (например насколько те самые семантически значимые признаки вписываются в картину «создателя» сети); к примеру она не отличит огурец от банана, если в нее изначально не заложена функция оценки цветовой составляющей или целого ряда других характерных признаков (типа она будет находить банан только в руках у обезьяны, т.к. последняя вряд-ли найдет где-то огурец) или они просто отсутствуют во входных данных, а дополнительные «знания» не были заложены создателем сети
  • данные из обучающей выборки, на которых собственно сеть обучается, должны быть:
    • репрезентативны (должны иллюстрировать истинное положение вещей в предметной области);
    • непротиворечивы (противоречивые данные приведут к плохому качеству обучения сети);
    • преобразованы к виду который можно отправить входным нейронам (т.е. должны быть как минимум первично обработаны другими алгоритмами)
  • результаты решения после и вовремя обучения должны быть обязательно проверены на правильность решения (кто это будет делать, когда нас всех отправят на пенсию…)
  • сложные нейросети в массе своей очень и очень небыстрые создания, потребляющие кроме того кучу ресурсов и памяти (например для хранения той-же ассоциативной информации), хотя и решающие какие-либо узконаправленные заранее поставленные задачи нередко быстрее человека (ну так и калькулятор может например возвести в степень в миллионы раз быстрее человека, от этого он вряд-ли стал умнее последнего и может похвастаться большим интеллектом).

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


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


Кроме, того нередко результат работы такого «алгоритма» есть вероятностная оценка (или группа их).
Что я хочу этим сказать. Ну возьмем к примеру лог-строчку из вышеупомянутого поста:


Aug 18 08:04:51 srv sshd[2131]: Failed password for invalid user test from 1.2.3.4 port 46589 ssh2 from 4.3.2.1 port 58946 ssh2

Ну оценит она это как «неавторизованная попытка с хоста 1.2.3.4 с вероятностью 99%», если она обучалась на миллионах строк, где после первого " from " всегда стоит плохой адрес (и страшно ошибется). Или в лучшем случае — пропустит ее как «мусорную» строку или найдет там оба адреса (что как минимум должно быть предусмотрено в самом flow ее создателем).


На самом деле есть системы ИИ, называемые «системами обнаружения вторжений» (IDS), специально заточенные на выявление атак и (о чем нам говорит название) вторжений, однако я не знаю ни одной (а я много их повидал), которая здесь конкретно бы не споткнулась, чуть не полностью. В лучшем случае здесь был бы сигнал админу о множественных попытках «прорваться».


Как заставить ее «думать» как человек (т.е. начать как минимум сомневаться в том что видим) и главное принять в итоге правильное решение — это как раз очень сложная задача, которую пока решает разработчик (и нередко алгоритмически, вне или в обвязке нейросети) в каждом конкретном случае.
И это, как мне думается, еще очень и очень надолго.


Я не готов оценивать время, когда например те-же ИИ-помощники типа siri и компания, действительно получат хотя бы зачатки «интеллекта», в нашем его понимании, т.е. будут уже принципиально отличатся от того-же программируемого калькулятора (что касается действительно интеллектуальной составляющей). Но думаю, что это будет еще очень и очень не скоро.


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


Если же вы считаете, что создали уже что-то такое мега-умное, у меня для вас есть новости:


  • вы уже безработный
  • это вам уже не страшно, ибо вы еще и мультимиллиардер, т.е. уже сейчас можете смело брать кредит, идти покупать новую Теслу, уютный домик на Бора-Бора и т.п.
  • вас ненавидит лучшая часть человечества (другими словами вы выбрали себе врагами миллионы умнейших и образованнейших людей планеты)
  • скайнет уже близко (и скоро нас всех поработит)
  • за вами вероятно уже выехали (поэтому продумайте таки вариант с Бора-Бора)

Теперь собственно к опросам.


Чтобы исключить «шум» в опросах, они поделены на три группы (две для тех кто знает, и одна — для предположений), по два опроса для каждой целевой аудитории:


  • для профессионалов в разработке ИИ, машинного обучения и нейронных сетях в частности (например самостоятельно разработал/обучил/настроил несколько ИИ или нейросетей).
  • для теоретиков, т.е. людей, разбирающихся в теории, как это работает (но ни разу не использовавших это в бою)
  • предположения: для всех остальных (ну дайте уже кликнуть где-нибудь).

Огромнейшая просьба, не отсвечивать в опросах другой целевой аудитории (жмем «Воздержаться» после того как ответили в опросах у себя)…


Итак, поехали!

Комментарии (6)

  • 23 августа 2016 в 20:53

    +1

    Не очень понятно, как отвечать на «обладают способностью анализировать, например незнакомые объекты (их признаки)».

    Вот есть задача классификации изображений (фрагментов), есть большой набор данных для обучения, есть свёрточная нейросеть. Нейросеть обучили, т.е. минимизировали функционал ошибки, зависящий от коэффициентов свёрток. А дальше, вместо того, чтобы использовать выход сети, посмотрели на промежуточные слои и сами ядра свёрток — оказалось, что нейросеть «нашла» ряд признаков, которые оказалось эффективно использовать в отрыве от нейросети. Считается ли это способностью анализировать? Или это просто поисковая задача в ограничениях, заданных программистом?

    • 23 августа 2016 в 21:03 (комментарий был изменён)

      0

      что нейросеть «нашла» ряд признаков, которые оказалось эффективно использовать в отрыве от нейросети

      Она действительно нашла эти признаки? Или это просто костыли (зацепки) для поиска других признаков на поиск которых она заточена?
      Т.е. в примере с огурцом и бананом, играет ли роль, что обезьяна голая (человек) и поймет ли сеть, что в этом случае банан может быть огурцом (сможет ли произвести анализ)?


      Хотя я не претендую на истину в последней инстанции (и возможно действительно двусмысленно), предложите лучшее название для этого ответа…

      • 23 августа 2016 в 21:24

        –1

        Сколько ответить на этот вопрос. Исторически для этой задачи использовались методы обучения, основанные на ручном построении большого числа признаков — составления фича-вектора, а затем натравливании различных методов обучения на него. Свёрточные нейронные сети позволили перейти от ручного составления признаков к автоматическому.
        • 23 августа 2016 в 21:38

          0

          Ну надо было видимо как-то поставтить ударения на словах «анализировать» и «незнакомые». Я вот вас спросил, сможет ли какая-либо известная вам сеть сделать такой «анализ»:


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

          Т.е. сможет ли какая-либо известная вам сеть сделать анализ, не зная этих принципов и семантики таких признаков.


          Как-то так, а предложения по более подходящему названию будут?

      • 23 августа 2016 в 21:45 (комментарий был изменён)

        0

        А можно на примере? Вот сети на вход подают картинку из видео игры + данные из ячейки памяти отвечающией за score

        Далее, сеть научилась играть в игры — т.е. проходить уровень за уровнем. Означает ли это что она проанализировала игру, и нашла «неизвестные» признаки — т.е. как нужно играть в игру (какие кнопки нажимать) чтобы выйграть? Т.е. по факту нашла правила игры — является ли это ответом да на ваш вопрос?

  • 23 августа 2016 в 21:00

    –1

    Урааа, опросы на хабре!

© Habrahabr.ru