Применение нейронных сетей и генетических алгоритмов в прикладных решениях на платформе 1С

Публикация № 640325

Разработка - Инструментарий разработчика

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

Что такое «Нейронная сеть»?

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

Реальность же вообще такова, что все намного проще. Конечно, не все так однозначно, потому что уже сейчас есть такие понятия, как глубокие и самообучающиеся нейронные сети, на Youtube уже кошечек научились распознавать – но по факту, это все еще на уровне экспериментов, и явно не для прикладных задач. Поэтому мы поговорим о нейронной сети, которая более типична.

Итак, что такое нейронная сеть? Это некий Black BOX – система, которая позволяет из совокупности входящих данных что-то получить на выходе. Но для этого ее сначала нужно обучить – дать ей соответствие того, что поступает на вход, и того, что она должна выдать нам на выходе. И после того, как нейронная сеть обучится, она сможет нам выдавать данные на выходе уже автоматически.

Для чего все это нужно? Главное преимущество нейронной сети в том, что она не содержит в себе алгоритма. Она позволяет вам не думать, не анализировать закономерности, не писать алгоритм, а просто подстроиться под статистические данные.

Внутри нейронной сети будет что-то похожее на рисунок на слайде. Сначала я хотел это детально разобрать, объяснить, что такое нейрон, связи, веса связей, какие есть функции активации,  архитектуры нейронных сетей, но потом решил, что нам сейчас это неважно. Об этом написано много научных работ, это изучают в институтах. А нам сейчас надо просто понимать, что нейронная сеть – это некая структурная модель, имеющая входы и выходы, а нейроны – это некие сущности, между которыми есть связи разного веса, и в процессе обучения просто происходит подстройка этих весов связей. Это – то же самое, что и у вас в голове: у каждого нейрона есть свой импульс – один может быть более возбужден, другой – менее возбужден, и поведение этих нейронов в модели зависит от того, какой вес (больший или меньший) имеют их связи.

Здесь важно то, что нейронов в нейросети может быть много, даже несколько слоев. В простейшем случае вы можете собрать нейронную сеть из одного нейрона, у которой, к примеру, будет два десятка связей. Она, например, может работать, как линейная функция – рисовать прямую или что-нибудь в этом роде. Если в сети будет уже два-три нейрона – вы получите уже нейронную сеть, которая будет аналогом линейной регрессии. Наверное, большинство из вас знает, что это такое – пользовались когда-нибудь линейной регрессией в Excel. В принципе, нейронная сеть в простейшем виде – это аналог линейной регрессии, некоторая модель, которая позволяет вам найти и продолжить ряд чисел, зависимостей. Только простейшая нейронная сеть будет выдавать уже намного более качественный результат, чем просто линейная регрессия. Плюс нейронная сеть, конечно же, сможет выявлять такие зависимости, которые вы сами не увидите, и ни за что в жизни о них даже не догадаетесь. А линейная регрессия, конечно же, этого не может.

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

Что мы, как правило, думаем о нейронных сетях?

  • Мы думаем, что нейронная сеть – это сложно. На самом деле, нейронная сеть – это реальная возможность для «халявы». Она позволяет вам не решать задачу, а просто взять и использовать для получения результата статистические данные. Не надо детально разбираться в вопросе, строить полноценную математическую модель – это не усложнение, это скорее, для тех людей, кто стремится решить задачу, не разбираясь в том, как она решается.
  • Далее – как правило, нейронная сеть у нас ассоциируется с распознаванием голоса, образов, такими программами, как FineReader, GoogleVoice и т.д.  Это лишь потому, что эти задачи без нейронной сети по-другому решить не получится. Но вообще нейронную сеть можно использовать для решения любой задачи, где есть какая-то накопленная статистика, входы и выходы, любые задачи, где применима линейная регрессия. Например, задача распознавания паттернов, аппроксимации функций, любые другие задачи, имеющие на входе модель – все это решается при помощи нейронных сетей.
  • Математика. Да, нейронная сеть – это математическая модель, составленная на языке C++, но вам не придется писать этот код C++ самим. Есть удобные конструкторы: несколько кликов, и вы получаете готовую нейронную сеть.
  • Ну и, конечно же, нейронная сеть не для 1С. Но я, тем не менее, здесь, и моя цель – убедить вас в том, что 1С прекрасно может работать с нейронными сетями.

Практическое применение нейронной сети для решения бизнес-задачи

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

На примере начальник вызывает программиста и просит, к примеру: «Хочу знать, где у меня много посетителей и мало продаж». Допустим, это розничная сеть, количество посетителей в каждом магазине фиксируется, и начальник хочет знать, какие магазины плохо работают.

Программист говорит: «Ок, завтра будет такой отчет». Конечно, обычно программист говорит по-другому: «Это очень сложно, мне нужен аналитик, опишите мне задачу подробнее, напишите ТЗ» – все этим так или иначе занимались, я сам лично этим все время занимаюсь. Но у нас другой программист, он владеет нейронными сетями, поэтому он сразу соглашается.

Проходит неделя, начальник опять вызывает программиста и говорит: «Твоя программа не работает, она не учитывает, какие продажи были проведены по акции. Если у нас в магазинах была акция, там, конечно, количество продаж увеличилось, но это не значит, что они хорошо отработали, это значит, что мы там просто цены снизили. Почему ты это не учел?»

Программист говорит: «Извините, виноват, через час переделаю». Конечно, на практике мы говорим: «Мне придется все переписывать, я не смогу учесть эти изменения». Но в данном случае будет не так: программист просто добавляет в свою выгрузку новую колонку, обучает нейронную сеть и предоставляет начальнику новый отчет.

Проходит еще неделя. Начальник опять вызывает программиста, говорит: «Ты опять накосячил. У нас каждый сезон посещаемость меняется, и к тому же по выходным совсем другая статистика – нужно учитывать еще и день недели и месяц». Обычному программисту дать на это ответ очень тяжело – я бы потерялся. Но наш программист говорит: «Да вообще не вопрос, дай мне еще часик, и я все сделаю». Добавляет в ту же модель дни недели и месяцы, переобучает нейронную сеть и получает новый вариант отчета.

На это начальник сможет только удивиться: «Как ты это делаешь?» А программист ответит: «Это секрет».

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

Это достаточно типовой пример использования нейронной сети для решения бизнес-задач. Где это можно еще использовать? Прогнозы ДДС, задачи бюджетирования, любые прогнозы на основании истории, любые получения из одних чисел других.

Давайте еще раз акцентируем внимание на том, что программист в итоге делает:

  • Сначала он определил входы:
    • В нашем случае это количество посетителей в магазинах.
    • Потом туда добавляется еще наличие в магазинах акций;
    • Дни недели;
    • И месяцы. Всего получается четыре колонки.
  • Дальше он сопоставил входам выходы. Выходы у нас – это продажи по магазинам в разрезе каждой совокупности дополнительных условий. Получился элементарный отчет, который, я думаю, сможет написать любой из тех, кто хоть как-то связан с программированием.
  • А дальше он просто обучил нейросеть.
  • И использовал ее результаты для решения задачи.

Что такое «Генетический алгоритм»?

Начнем следующую тему, поговорим про генетический алгоритм.

Здесь изображено то, то мы обычно представляем себе, когда думаем о генетических алгоритмах. Кажется, что это что-то такое сложное, как спираль ДНК, где различные атомы связаны друг с другом.

На самом деле, все опять достаточно банально. Генетический алгоритм – это некий алгоритм, в основе которого пять шагов, и пишется простейший генетический алгоритм минут за 15. Слайд в принципе, все это полностью иллюстрирует.

Здесь мне, наверное, стоит только рассказать, что такое особь, популяция и селекция.

Особь – это любой набор параметров, который у вас есть. Что это такое, я объясню на примере типичной задачи коммивояжера. Наверное, все более-менее знают, что это такое – это когда логисту нужно построить маршрут объезда неких точек и на выходе получить порядок объезда этих точек. В этом примере, окончательный или промежуточный порядок обхода точек – это и будет одна особь.

  • Сначала генетический алгоритм генерирует этот порядок случайным образом – точка 1, 2, 3, 4, 5, 6 и т.д. Этот первый этап называется созданием начальной популяции.
  • На следующем этапе происходит скрещивание особей меняется порядок точек 3, 2, 1, 6, 5, 4 и т.д. Подробнее о том, что такое скрещивание, я покажу на следующем слайде. Или происходит мутациязамена одного параметра на произвольный для того, чтобы появлялись новые особи, а не только выбирались из существующих.
  • Далее происходит селекция – из двух особей нужно выбрать лучшую. Селекция – это ключевая тема. Почему она так важна? Потому что 99% времени работы над генным алгоритмом скрыто именно вот здесь. Но это не сам генный алгоритм – это программируемое вами решение задачи.
  • Потом из тех особей, которые мы отобрали, формируется новое поколение. И вы его проверяете – достигнута цель или нет.
  • Причем, целью необязательно будет поиск наилучшего маршрута, вы можете поставить цель найти наиболее оптимальный вариант за выбранное время. Например, весь этот поиск может длиться 4 часа, а вам нужно найти решение за 15 минут. Так вот тот лучший маршрут, который вам система успеет выбрать за это время – это и будет ваш результат. Либо вы можете поставить условие – стоимость проезда меньше миллиона рублей. Либо что-то еще. И та результирующая популяция, к которой мы придем при достижении этого условия, и будет содержать в себе окончательную особь – результат вашего поиска.

Как выглядит скрещивание?

Берут первый и второй вариант объезда точек, и дальше его просто скрещивают – берут что-то из первого, а что-то из второго.

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

Селекция – это уже интересно. Вам нужно выбрать самую лучшую особь, и эту задачу вам придется решить уже полностью самим. Например, если вы выбираете кратчайший маршрут объезда, вам нужно будет посчитать, сколько времени займет маршрут при таком наборе входящих параметров. Причем, это задача не генетического алгоритма, это задача, которую вы должны решить самостоятельно. Здесь нужно посчитать целевые функции по набору параметров и сравнить их между собой.

Задача селекции занимает до 99% всего времени выполнения генетического алгоритма. Как правило, задачу селекции нельзя отдать во внешнюю систему, поэтому она выполняется в той системе, которую вы оптимизируете.

Вот иллюстрация задачи коммивояжера. Все, наверное, так или иначе, сталкивались с системами управления грузоперевозками TMS (Transport Management System). В них как раз можно посчитать эти кратчайшие маршруты, причем генетический алгоритм туда заложен в 95% случаев – если нет, то это, как правило, плохая TMS-система. Я в своей практике тоже один раз написал для такой задачи генетический алгоритм – он в 5 раз ускорил нахождение маршрута, при этом качество прокладки маршрутов также улучшилось.

У генетических алгоритмов также есть свои минусы. Наверное, вы уже догадались, что точные установки результата в них невозможны. Генетический алгоритм не гарантирует, что он выберет лучшее решение. И если генетический алгоритм после четырех часов работы нашел вам какое-то решение, вы не можете быть уверенным, что оно – лучшее, возможно, найдется и более быстрый маршрут проезда. Генетический алгоритм гарантирует только то, что это решение лучше, чем другие, при выборе данных в такой последовательности.

Технологии для построения нейросети

Вернемся к нейросетям – теперь уже с практической стороны. Рассмотрим, что нужно, чтобы использовать их в своем коде.

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

  • Есть языки высокого уровня, которые позволяют решать различные задачи.
    • Если вы умеете что-то писать на C++ – можно использовать его для построения нейросети.
    • Также можно найти много информации по построению нейросетей на Python – этот язык классически используется для сложной алгоритмики.
    • И есть язык R – это язык математики, который так же, как и C++, используется для математических вычислений.
  • – это, естественно, наш основной инструмент.
  • И Matlab – инструмент, который для этих целей применяется, наверное, чаще всего.

Быстродействие:

  • Если мы напишем нейросеть на C++ или на Python, она будет работать чуть-чуть быстрее, чем та, которую мы получим из Matlab, но в целом оба класса инструментов позволяют очень быстро получать результат, потому что в Matlab тоже компилируемая библиотека.
  • В 1С, к сожалению, все очень медленно работает. К тому же, если написать нейросеть на 1С, ее придется очень долго обучать – от нескольких часов до нескольких дней.

Скорость разработки:

  • На 1С, конечно, быстро разрабатывать, но писать нейросеть придется руками.
  • В Matlab есть уже готовые средства визуальной разработки.
  • На R или Python есть свои библиотечки, но писать придется тоже руками.

Функциональность:

  • Языки R и Python лидируют по функциональности для написания нейросетей, потому что они используют специализированные библиотеки – очень мощные и серьезные.
  • В Matlab функциональность по созданию нейросети чуть-чуть уступает, там нет самых последних, самых крутых нововведений, но большая часть функций (20 видов нейронных сетей) там есть.
  • А в 1С вам доступно, конечно, только написание простейшего перцептрона и его обучение.

Вывод понятен – я выбрал Matlab.

Использование Matlab для разработки нейросети

Matlab генерирует библиотеку на .NET, дальше мы эту библиотеку используем в 1С – в этом нет ничего сложного.

Как это сделать в Matlab?

  • В Matlab есть замечательная кнопка Import Data – она понимает любые форматы – текстовые, csv, xls – в 1С я бы мечтал о такой функции. Импорт очень простой – он разберет файл любого формата, покажет, какие в нем есть колонки, вы выбираете те, которые вам нужны, нажимаете «Записать» – выбираете, что хотите импортировать в матрицу, и он вам это импортирует в свой воркспейс. Matlab всегда работает только с матрицами – там нет никаких переменных, никаких чисел – вообще ничего.
  • Дальше вы в командной строке пишите волшебное слово nftool – запускается мастер создания нейронной сети.

  • Разобраться с этим мастером проблем не составляет – это все «гуглится». Единственное, что нам нужно будет выбрать из того воркспейса, куда вы импортировали – это:
    • Входы (Data), на которых нейросеть должна обучаться (в нашем случае, это будет количество посетителей, месяц, день и наличие акции)
    • И итоговые величины, выходы (target) – будут соответствовать продаже магазина.
  • Далее там будет кнопка Train, которая запускает обучение нейросети. Можно выбрать метод обучения, но, как правило, все, что Matlab выбирает по умолчанию, в наших случаях будет верно, только для каких-то серьезных задач там нужно будет выбирать особые параметры. Процесс обучения обычно занимает 5-10 минут.

  • После этого у вас появляется окошко, где есть кнопка для генерации Matlab Function – вы получаете функцию на языке Matlab.
  • Далее в консоли пишете еще одно волшебное слово – deploytool. Это специальный инструмент для того, чтобы сделать саму dll. Здесь тоже ничего сложного и хитрого нет – выбираете функцию, которую будете превращать в dll, называете ее так, как вам нравится, выбираете, что это будет .NET Assembly (сборка .NET). Единственное, что здесь стоит прокомментировать, что версии Matlab бывают x86 и x64. Соответственно, если вы хотите использовать эту dll на сервере, значит, используйте x64, а если на клиенте, то выбирайте x86. Либо вам придется идти на различные хитрости, вроде COM+ оберток и т.д.

Если кто-то захочет разобраться с тем, как нейросеть делается в Matlab – это реально «гуглится» за минут 5-10, там проблем нет.

Использование библиотеки нейросети в 1С

А с 1С все немного сложнее. Дело в том, что Matlab очень плохо работает с COM-объектами, он генерирует не полноценную COM-библиотеку, которую можно использовать в 1С – он подразумевает, что библиотека на входе должна получать какие-то параметры, а с такой библиотекой 1С работать не умеет. Поэтому лучше использовать .NET сразу, да и регистрировать его каждый раз не нужно. Для этого случая на Инфостарт есть замечательная публикация //infostart.ru/public/238584/ – «Использование .NET сборок в 1С». Большое спасибо программисту – мы не раз ее применяли.

Как это работает? Даже если вам не интересно знать про нейросети, сейчас .NET – очень популярный язык, на нем много пишут, поэтому будет полезно научиться использовать его в 1С.

На слайде вы видите пример использования нейросети в 1С. Кода тут 3 строчки – остальное комментарии:

  • Создается объект-обертка NetObjetToIDispatch45.
  • Далее загружается сборка – это та dll, которую вам генерировал Matlab. Важный момент – эту сборку даже не надо регистрировать. Вы можете этих нейросеток создавать хоть десятками, а потом в коде просто меняете одну строчку, и у вас загружается одна сетка, другая, третья, четвертая. В моем случае это был СКД-отчет, в котором когда пользователь выбирал вариант отчета, у него подгружались разные варианты dll. А сам код отчета, что самое интересное, был один и тот же.
  • Потом создаете тип нейросети – когда вы деплоили функцию, вы указали класс, и название самой библиотеки – их и нужно сюда написать.
  • Следующим шагом создается массив данных – объект нейросети. Здесь есть небольшая сложность – как я уже говорил, Matlab работает только с массивами, причем только со своими массивами – эти массивы называются MWArray. Для них есть отдельные сборки, и когда Matlab создает сборку dll для деплоя, он рядом помещает библиотеку MWArray.dll – поэтому ее найти не проблема. Но для нас главное, что ее тоже нужно загрузить, чтобы получить тип матлабовского массива.
  • Обратите внимание, что массив мы будем создавать на основе обычного массива COMSaveArray – кто в 1С работал с COM-объектами, тот понимает, что если вы передаете массив в COM-объект, то надо создать не 1С-массив, а массив COMSaveArray, чтобы у вас не дай бог ничего не вылетело. Итак, мы создаем массив (здесь у меня единички – это количество строк и колонок).
  • Наконец, передаем этот массив внутрь нейросети
  • И получаем результат.

Строчек кода получается совсем немного, но дальше на основании этого шаблона вы можете делать любые вариации – допустим, у вас будет не один элемент, а 10 (если у вас 10 входов было).

Технологии для генетических алгоритмов

Теперь несколько слов о практическом применении генетического алгоритма.

Поскольку наша прикладная задача находится в 1С, а основная тема генетического алгоритма – это селекция, следовательно, ни Matlab, ни R, ни C++ мы для генетического алгоритма использовать не будем. Для того чтобы нам выбрать лучшую особь, нужно использовать ту логику, которая заложена в 1С, соответственно, нам нужно использовать генетический алгоритм непосредственно в нашем 1С-ном решении.

Генетический алгоритм – это очень просто: там нет структурных вычислений, нет какой-то нереальной логики, нет математики. Вам достаточно написать 10 строчек кода: выбрать лучшую особь и сгенерировать случайным образом популяцию – это все, что нужно для нормальной работы генетического алгоритма.

Код 1С я здесь даже не привожу, потому что он будет у каждого свой – нужно просто запомнить последовательность действий.

***************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2016 DEVELOPER. Больше статей можно прочитать здесь.

В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.

Выбрать мероприятие.

Специальные предложения

Лучшие комментарии
24. dmurk 348 04.07.17 10:25 Сейчас в теме
Для желающих, есть пример ГА из моих старых наработок:
Общий модуль Генетические Алгоритмы
nnn123; CyberCerber; корум; stilet; Alex17; milkers; FarhadIlyazov; comol; +8 Ответить
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. spezc 668 03.07.17 10:13 Сейчас в теме
ничего про нейронные сети не понял, но за труды держите звезду.
kaliuzhnyi; Aquashop; invertex; formica32; TuMyP1985; ustinov_greendale; demkonst; manlak; FarhadIlyazov; Romakon92; Dmitri93; DmitryKSL; +12 Ответить
2. Solovyeff 03.07.17 10:51 Сейчас в теме
Код 1С я здесь даже не привожу, потому что он будет у каждого свой – нужно просто запомнить последовательность действий.

Вот на пример кода 1С было бы весьма интересно взглянуть. Если вам не затруднительно, может добавите в статью?
kaliuzhnyi; Александр4023512; invertex; kar911; formica32; Irwin; CyberCerber; demkonst; Goxanov; Трактор; fancy; Amadeuc404; Rain88; Romakon92; Dmitri93; Angealtor; sasha777666; +17 Ответить
3. comol 4355 03.07.17 10:57 Сейчас в теме
(2) Не, не пришлю... стыдно, да и конкретная там транспортная задача решается будет особо ниочём
13. starik-2005 2198 03.07.17 16:19 Сейчас в теме
(2)
Вот на пример кода 1С было бы весьма интересно взглянуть
А в чем сложность написать код? Все же и так разжевали: генерите рандомом первую популяцию, вызываете функцию нахождения лучших "особей", отвечаете на вопрос, есть ли среди них достаточного уровня перс. Если есть - ура, угадали с первого раза, если нет - вызываете функцию скрещивания, порождая новых персов из старых данных (у одного ребенка тут может быть и больше двух родителей). Дальше снова пункт 2. Если в течение энного количества итераций не находите улучшений, а достойного перса все нет, то вызываете функцию мутации популяции, где какой-то процент генов меняются на новые. Ну и так до победного конца.
pvlunegov; +1 Ответить
20. Makushimo 156 04.07.17 05:55 Сейчас в теме
(13)
Да там все еще проще, чувак,
Открываешь 1С
гуглишь матлаб
жмешь кнопку и все
начальник доволен

и правда, о чем весь сыр-бор ))
saver77; user774630; juliia1992; formica32; CyberCerber; корум; PowerBoy; sergelemon; comol; RainyAugust22; +10 Ответить
32. starik-2005 2198 04.07.17 14:54 Сейчас в теме
(20)
Да там все еще проще, чувак,
Открываешь 1С
гуглишь матлаб
С учетом того, что я описывал генетический алгоритм, Ваш ответ смотрится странно...
39. Makushimo 156 05.07.17 05:12 Сейчас в теме
(32) Вы именно так и "описали" этот генетический алгоритм. В смысле так же понятно как и я.
Вы в теме, я - нет.
Ваше "описание" для тех, кто не в теме (для меня) выглядит именно так - непонятно.
Порождает еще больше вопросов.
formica32; +1 Ответить
46. starik-2005 2198 05.07.17 11:10 Сейчас в теме
(39)
Порождает еще больше вопросов.
Ну давайте вопросы. А то Ваша статья даже их не порождает (в плане ГА).
48. Makushimo 156 05.07.17 11:51 Сейчас в теме
(46) Я статьи не писал, я же не в теме. Я статью читаю эту. И ничего не понимаю из нее. Вон автор уже намекнул как это "печально".
Вопросы я уже в комментарии выше указал. именно мелочей и не хватает для понимания. Но кому они нужны (может автор и сам в них не силен) мелочи эти?.

По вашему комментарию, раз уж вы заявили себя понимающим в этом вопросе, то может разъясните неучу.

"генерите рандомом первую популяцию"
если речь идет о примере в статье, то конкретно в цифрах и по пунктам, что за популяция и почему рандомом?

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

". Если есть - ура, угадали с первого раза, если нет - вызываете функцию скрещивания, порождая новых персов из старых данных (у одного ребенка тут может быть и больше двух родителей). "
Опять же пример.

"Дальше снова пункт 2. Если в течение энного количества итераций не находите улучшений, а достойного перса все нет, то вызываете функцию мутации популяции, где какой-то процент генов меняются на новые. "
тут я понял что скрещивание от мутации отличается некими "новыми генами". А что это? Откуда их брать?

"Ну и так до победного конца"
Когда конец победный?

Если лень писать, то пошлите меня на... в гугл или киньте ссылкой
50. starik-2005 2198 05.07.17 13:04 Сейчас в теме
(48)

По вашему комментарию, раз уж вы заявили себя понимающим в этом вопросе, то может разъясните неучу.

"генерите рандомом первую популяцию"
если речь идет о примере в статье, то конкретно в цифрах и по пунктам, что за популяция и почему рандомом?

Пример простой. Вот есть, допустим, у Вас некоторая задача коммивояжера. У него есть Эн пунктов, и есть время перемещения между любыми двумя пунктами. Т.е. такой массив, в качестве значения которого структура описанием точки и временем переезда из нее в любую другую точку (типа так {x:1; x1: 0; x2: 5; x3: 10; ...}, где х - номер точки, х1 - время до первой точки (0), х2 - время до второй точки и т.д.). Дальше нам нужно решать, в какой последовательности это все нужно объехать, чтобы было быстрее. Для этого в генетическом алгоритме создается популяция, создается она случайно, типа так: 1, 3, 7, 2, 5, 8, 4, 6 (для 8-ми точек) Циферки просто берутся случайно. Абсолютно случайно. Никакой мистики. Можете вообще так взять: 1, 2, 3, 4, 5, 6, 7, 8. это у нас экземпляр получился. Но для того, чтобы получить некоторую выборку, которую нужно сравнить между собой, нам нужно несколько экземпляров создать. Сколько - на Ваше личное усмотрение. Это понятно? Как нагенерить случайных экземпляров Вам не нужно рассказывать, или Вы даже это не понимаете?


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


И что тут непонятного? Просто проверяете, что из ваших экземпляров лучше. Т.е. в цикле смотрите время для первого, второго, третьего и прочих... В итоге, допустим, у Вас есть 8 экземпляров, которые случайным образом собрались. Они должны быть разными. Из них получилось 4 лучше, 4 хуже. Оставляете лучших, проверяете, укладываетесь ли Вы в целевое время (30 минут, например). Если нет - производите скрещивание. Как скрещивать - на Ваш выбор. Например, берете сумого крутого и скрещиваете с ТОП 2 по четные из первого / нечетные - из второго, но при этом нужно, чтобы не было двух одинаковых. Это можно сделать случайным образом, а можно выбрать лучшие дуги из разных особей (например, если дуга 1 в первом экземпляре лучше, чем во втором - берем из первого, если хуже - из второго). Тут как раз простор для творчества.


". Если есть - ура, угадали с первого раза, если нет - вызываете функцию скрещивания, порождая новых персов из старых данных (у одного ребенка тут может быть и больше двух родителей). "
Опять же пример.

Ну если вы поставили целевое время 30 минут, то проверяете, уложился ли Ваш экземпляр в это время. Если уложился - вот он, наш герой! Берем его и не парим дальше моск. Если не уложился ни один из нагенеренных экземпляров, то производим скрещивание.



"Дальше снова пункт 2. Если в течение энного количества итераций не находите улучшений, а достойного перса все нет, то вызываете функцию мутации популяции, где какой-то процент генов меняются на новые. "
тут я понял что скрещивание от мутации отличается некими "новыми генами". А что это? Откуда их брать?

"Ну и так до победного конца"
Когда конец победный?

Новые гены - это такие дуги, которых нет в выживших экземплярах. Т.е. если мы описываем 1,2,3,4,5,6,7,8, то у нас нет дуги, например, 1,3 (из первой точки в третью). давайте ее добавим (опять же выбираем дугу случайным образом, а потом проверяем, лучше ли она тех дуг, которые есть и меняем, например, самую нехорошую дугу на нее, но при этом у нас в экземпляре должны остаться все точки. Можно просто генерить дугу рандомом и смотреть, получится ли на нее что-то заменить. Ну и дальше опять считаем время для получившихся экземпляров и сравниваем с целевым временем. Также запоминаем где-то в каждой итерации лучший экземпляр, который можем выставить в качестве победителя через энное количество времени, если за это время мы не нашли экземпляра, укладывающегося в целевое время.

Если лень писать, то пошлите меня на... в гугл или киньте ссылкой

Кто-то тут чуть выше ссылался на гитхаб с каким-то кодом.
user774630; +1 Ответить
52. Makushimo 156 05.07.17 14:11 Сейчас в теме
(50)одно уточнение: самая нехорошая дуга - это дуга с самым большим временем среди имеющихся в экземпляре?
53. starik-2005 2198 05.07.17 15:49 Сейчас в теме
(52)
самая нехорошая дуга - это дуга с самым большим временем среди имеющихся в экземпляре?
и такое может быть. Все зависит от конкретной реализации. Самой плохой может быть и другая дуга, для которой просто есть вариант лучше, при этом для дуги с худшим временем нет лучшего варианта. Т.е. тут как раз пространство для творчества.
54. Makushimo 156 06.07.17 11:45 Сейчас в теме
(53) Спасибо за разъяснения
4. Makushimo 156 03.07.17 12:47 Сейчас в теме
ндааа, интересно бьло бы подетальнее в 1С увидеть.
Вот делаем выборку для создания/обучения
Вот когда используем сеть, то делаем еще выборку.... ээээ?
А что мы тогда вначале выгружали?

Не прозрачно, как в работе выглядит использование сети.
Пример с правильным программистом не внес ясности.

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

Как и всегда на конференциях многа слов и ничего полезного.

Пойду гуглить, и зачем тогда статью читал?..
formica32; CyberCerber; manlak; zqzq; Sergafan10; MSK_Step; +6 Ответить
14. comol 4355 04.07.17 00:50 Сейчас в теме
(4) э... для нейронных сетей же есть пример.... Я даже не знаю что ещё можно добавить
21. Makushimo 156 04.07.17 06:07 Сейчас в теме
(14) Ваш пример ничего не показывает и не объясняет.

Гораздо полезнее было бы этот пример изложить в таком виде:

- У меня есть такой набор данных.
- Хочу, чтобы мой отчет выдавал такие вот данные
- Ага! Для этого мне понадобится нейросеть
- Готовлю для создания/обучения сети вот эти данные
- Дальше создаю нейросеть
- Объясняю, что теперь может делать эта нейросеть
- Показываю, в 1С подаю на вход нейросети такой вот набор данных,
- Объясняю что этот набор данных отличается от набора для обучения (или не отличается и почему)
- На выходе получаю нужный набор данных в отчете.
- В конце читателю должно быть кристально ясно, КАК работает нейросеть для решение именно ЭТОЙ задачи
- А также понимание того как читатель сможет сделать и применить нейросеть для своих задач, если захочет
- Должно быть понимание того, что нейросеть пережевала данные со входа на выход именно таким образом потому что мы ее обучили на этих данных

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

Ваша цель чему то научить или похвастать?
Александр4023512; user774630; kauksi; formica32; Goga1979; CyberCerber; Kirill_K; Sashares; Goxanov; корум; PowerBoy; sergelemon; +12 Ответить
25. comol 4355 04.07.17 10:25 Сейчас в теме
(21)
Гораздо полезнее было бы этот пример изложить в таком виде:

Слушайте, ну таких видео полный ютуб... я как то не хочу быть попугаем...

https://www.youtube.com/watch?v=2afTCq1IWNc

Потому что потом найдётся другой человек, который будет кричать "баян" и обвинять в "копипасте" :)))
пример как это использовать в 1С я показал.

читателю должно быть кристально ясно, КАК работает нейросеть

Если бы я мог это рассказать был бы уже Нобелевским лауриатом
40. Makushimo 156 05.07.17 05:15 Сейчас в теме
(25)
Слушайте, ну таких видео полный ютуб... я как то не хочу быть попугаем...

а зачем статья тогда? конференция все дела? что нужного и полезного эта статья по-вашему несет?
formica32; +1 Ответить
44. comol 4355 05.07.17 09:58 Сейчас в теме
(40)
что нужного и полезного эта статья по-вашему несет?


Ну если вам ничего не принесла то либо вы уже эксперт в НС, либо это печально :(.

Статья и доклад никоим образом не претендуют на исчерпывающую информацию - только "стартовый толчок" к изучению новой (если новой) технологии.
47. Makushimo 156 05.07.17 11:40 Сейчас в теме
(44) нормально так соскочил с темы ))
Ладно, закроем эту бесполезную полемику.
user774630; +1 Ответить
5. TODD22 19 03.07.17 12:50 Сейчас в теме
Я вот то же не особо понял прикладную часть. Ну нейросети... ну классно. А что там в итоге на практике получилось? Какая задача была решена, какой эффект, сравнение с другими способами...
А то получается нейросети, ради нейросетей....
formica32; VVi3ard; lobster; CyberCerber; zqzq; +5 Ответить
15. comol 4355 04.07.17 00:51 Сейчас в теме
(5) Ну задача в частности решалась прогнозирования финансовых потоков... по понятным причинам конкретный пример выложить не могу :).
Да ещё и не знает же никто что там нейронная сеть работает :)
19. TODD22 19 04.07.17 05:13 Сейчас в теме
(15)А на сколько точно прогнозирует? Я думал над тем что бы сделать прогноз продаж для прогнозирования потребности в товарах. Но что то руки не доходят... :)
23. comol 4355 04.07.17 10:20 Сейчас в теме
(19)
А на сколько точно прогнозирует?
зависит только от вашей фантази... ну и от фазы луны пожалуй :).

Если серьёзно, то очень много влияющих факторов, "средняя температура по больнице" будет. Достаточно знать что точно НС прогнозируют лучше чем линейная регрессия... даже для приводимых к линейным задач. В некоторых случаях векторные машины или деревья решений могут давать лучшие результаты, но не угадаешь.
28. TODD22 19 04.07.17 10:28 Сейчас в теме
(23)Я понимаю что разные инструменты дают разную точность.
На практике какой точности удалось добиться? Например программа прогнозирует что на следующей неделе поступит 100500 млн мексиканских пессо. А на деле через неделю смотрим и видим что пришло только 100100 млн мексиканских пессо?
На сколько у вас прогноз с фактом сходится?

Иногда на досуге почитываю по ML. В тестовых примерах погрешность в 8-10% считается удовлетворительной для учебных задач.
29. dmurk 348 04.07.17 10:34 Сейчас в теме
(28) На практике сталкиваешься с ошибкой построения хромосом. Например, применение ГА для поминутной оптимизации производственного плана, на первом этапе показало, что посчитанный производственный план нереален, так как:
1. в хромосому необходимо было заложить время на транспортную операцию
2. не была учтена задержка времени реакции рабочих на следующий пункт плана
3. оценочная функция не учитывала ограничение по складским площадям для хранения полуфабрикатов
30. TODD22 19 04.07.17 11:00 Сейчас в теме
(29) Я спрашивал не про ошибки построения хромосом. А про то какие результаты получили на практике....
31. dmurk 348 04.07.17 13:04 Сейчас в теме
(30) На практике:
1) Неудовлетворительный результат для решения задач прямолинейного раскроя
2) Неудовлетворительный результат для решения задач оптимизации производственного процесса
3) Приемлемый результат для решения логистической задачи доставки товаров грузовиками
41. TODD22 19 05.07.17 06:56 Сейчас в теме
(23) Олег так не расскажите на сколько в итоге план с фактом совпадают при прогнозировании денежных потоков?
43. comol 4355 05.07.17 09:56 Сейчас в теме
(41) Вы сами то ещё не поняли, что ваш вопрос звучит примерно как
"Каково среднее время внедрения 1С?" :)))))))
45. TODD22 19 05.07.17 10:09 Сейчас в теме
(43) Вы пишите:
Ну задача в частности решалась прогнозирования финансовых потоков... по понятным причинам конкретный пример выложить не могу :).


Вот я и спрашиваю на сколько точно прогнозирует финансовые потоки нейросеть ?

При чём тут среднее время внедрения?
6. Baksheev-Nikita 540 03.07.17 12:59 Сейчас в теме
Хорошая статья, сложная тема, так понятно описана. Поставил звезду. Спасибо
starik-2005; +1 Ответить
7. Nigmatul 03.07.17 13:11 Сейчас в теме
Давно искал подобную статью где разжевали на эту тему. Лови зеленку
8. Sybr 237 03.07.17 14:08 Сейчас в теме
МатЛаб, 1С... Нет бы, свой микросервис написать с нейронкой на tensorflow. Прокачать скиллы в современных технологиях, практической ценности в машинном обучении в задачах, которые на 1С решаются, пока не видно.
formica32; +1 Ответить
16. comol 4355 04.07.17 00:52 Сейчас в теме
(8)
Нет бы, свой микросервис написать с нейронкой на tensorflow

Ну это из пушки по воробьям... :). Для задач обычной регрессии оно конечно не нужно.
9. МихаилМ 03.07.17 15:03 Сейчас в теме
для начинающих советую книгу по нс
http://www.neuroproject.ru/Papers/Neurocomputing.htm

конечно основной массе 1с-ников нужен сквозной понятный пример

матлаб стоит от 200 т.р. те для разовых задач уговорить купить руководство сложно
11. starik-2005 2198 03.07.17 15:38 Сейчас в теме
(9)
матлаб стоит от 200 т.р. те для разовых задач уговорить купить руководство сложно
Ну есть же библиотеки для C++ и прочего. Суть сети - это линейная алгебра . Фактически строится матрица состояний, а потом для входящих данных производится некая sign-функция, сопоставляющая матрицу состояний с входящими данными для получения некоторого элемента N, который очень походит на входящий. Т.е. мы берем эти четыре параметра и получаем такой искомый элемент входа, на который данная комбинация максимально похожа. Это в таком примитивно упрощенном варианте. Т.е. если у нас на входе посетители, день недели, месяц и продажи, то зная, что мало продаж - это что-то ниже какого-то среднего, а много продаж - выше, мы получаем некую оценку "много/мало" (можно и "средне по больнице") на основании этих показателей. По-сути, тут как раз нейросеть и не нужна особо, но для примера вполне пойдет.

https://vk.com/proglesson?z=video-114520171_456239017%2F078a12eb751a8f30da%2Fpl_wall_-114520171
18. comol 4355 04.07.17 00:56 Сейчас в теме
(11)
По-сути, тут как раз нейросеть и не нужна особо
Ну всё-таки от линейной регрессии даже тут будет намного лучший результат..
34. s22 19 04.07.17 18:41 Сейчас в теме
(9) не советую читать книги позднее 2016
все кардинально изменилось.
сейчас нейронная сет с батчнормализацией, регуляризацией, с релу, модулем внимания, "мечтаниями" и прочими радостями обучается в десятки раз быстрее и лучне
38. comol 4355 04.07.17 22:34 Сейчас в теме
(34)
десятки раз быстрее и лучне
Интересно что же такого изменилось в алгоритмах обученния и логике построения обычных НС? По-моему уже лет 20 одно и то же. Глубокие НС шагнули вперёд, но не принципами, а появляением новых архитектур....
10. МихаилМ 03.07.17 15:14 Сейчас в теме
может с ценами на мат лаб и ошибаюсь
https://www.mathworks.com/store/link/products?requestedDomain=www.mathworks.com
для версии home - цена терпимая
17. comol 4355 04.07.17 00:54 Сейчас в теме
(10) Ну если говорить о покупке оно конечно того не стоит, есть прекрасные библиотеки для phyton и R. В основном вопрос удобства + 2-3 дня на освоение от дружественного матлаба.
12. Новиков 291 03.07.17 16:05 Сейчас в теме
Статья - введение во введение :)
Для тех кто хочет поглубже копнуть, рекомендую эту книгу.
22. HAMMER_59 210 04.07.17 07:20 Сейчас в теме
"Для тех, кто не изучал их в университете, я сначала напомню теорию – что это такое, для чего это надо"
А те кто изучал ИИ в институте заметили, что очень поверхностный обзор, нейросети есть разные и применяются для разных задач.
Уже отметили в комментариях, что далеко не у всех есть Mathlab, и не дешевое это удовольствие.
26. comol 4355 04.07.17 10:26 Сейчас в теме
(22)
очень поверхностный обзор

Да, это так.
64. user1172627 09.03.19 00:16 Сейчас в теме
в чем проблема скачать с трекера matlab?)
24. dmurk 348 04.07.17 10:25 Сейчас в теме
Для желающих, есть пример ГА из моих старых наработок:
Общий модуль Генетические Алгоритмы
nnn123; CyberCerber; корум; stilet; Alex17; milkers; FarhadIlyazov; comol; +8 Ответить
27. comol 4355 04.07.17 10:27 Сейчас в теме
(24) Пасиб, ткнул в начало... у меня конечно код ГА был такой что не выложишь :)
33. s22 19 04.07.17 18:36 Сейчас в теме
А смысл обучать на 1с?
можно сеть сделать на питоне, вычислить веса и перенести в 1с....
хотя 1с это не для нейронных сетей, так как точно не будет поддержки гпу.
36. comol 4355 04.07.17 22:30 Сейчас в теме
(33)
А смысл обучать на 1с?
Читайте статью... обучать на 1С бессмысленно - обучаем на матлабе
35. s22 19 04.07.17 18:42 Сейчас в теме
вообще идеально было бы реализовать компоненту вызова питоновских функций.
49. v3rter 05.07.17 12:38 Сейчас в теме
Интересно, какую генетическую задачу гоняют на человечестве - 7 миллиардов популяция, 80 миллиардов неудач - и что пытаются вывести? )
ilyaars; Sintson; +2 Ответить
51. starik-2005 2198 05.07.17 13:10 Сейчас в теме
(49)
80 миллиардов неудач
Ну само человечество - уже удача. Даже достаточно неудачные экземпляры человека живут по большому счету лучше, чем любой представитель других видов. Типа сидим в инете, смотрим киношки, едим булки, пьем чайок н и т.д. Скучно, но лучше так, чем борьба за существование в дикой природе.
ilyaars; VVi3ard; +2 Ответить
55. starik-2005 2198 06.07.17 12:43 Сейчас в теме
http://mathmod.asu.edu.ru/images/File/ebooks/GAfinal.pdf - ссылка на достаточно крупный труд. Эту ссылку привел один из авторов публикаций, посвященных генетическим алгоритмам. Там как раз описано множество подходов для создания функций скрещивания, мутации и тестирования результата (fitness-func).
56. pvlunegov 158 04.07.18 14:36 Сейчас в теме
Большое спасибо автору за гениальный принцип создания и применения нейросетей в 1с.
Насчет тех, кто хает статью.
В двух словах объяснить, что такое генетический алгоритм, что такое нейросеть, зачем они нужны и как их применять - невозможно.
Кому надо - читайте научные статьи.

Мне очень понравился простой принцип генерации dll из исходной матрицы данных из 1с для использования внутри 1с.
Матлаб не изучал на эту тему.
Скорее попробую данный принцип в применении 1с.

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

Можете почитать научные статьи, коих полно.

Например, идеи сходу:
1. Создать нейросети для ответа на простые вопросы, отвечать будем по данным 1с:
- Самый продаваемый товар, его средние характеристики, вес, форма, кто поставляет
- Покупатель, приносящий наибольшую прибыль, какие его средние характеристики, какие предпочтения по товарным категориям, какие характеристики товаров которые он берет.
- В какие дни недели и часы какой товар наиболее популярен?
Построить график и карту по товарным позициям и положении на карте магазина.
- Наибольшие нагрузки на кассы поминутно, на карте, какие продавцы вызывают очереди

Это вопросы являются краеугольным камнем эффективности гипермаркета, они важны для директора магазина.

Для владельца торговой компании средней руки те-же вопросы формулируются одинаково, только заменяем термины:
Покупатель на Контрагент
Касса на Сайт
Продавец на Менеджер.
57. pvlunegov 158 04.07.18 14:41 Сейчас в теме
Благодаря применению нейросетей можно по данным 1с формировать оперативные отчеты по статистическим данным.
Чем быстрее приходят данные в 1с и чем более они актуальны, тем лучше будут прогнозы нейросетей.
Например, сделать нейросеть, обученную на:
1. Каких товаров не хватает на складе, Какие товары скоро закончатся на складе, в течении дня, в течении нескольких часов
2. Благодаря нейросети 1. Создать нейросеть 2, которая оперативно формирует заказы поставщикам по товарам, по которым СКОРО БУДЕТ НЕХВАТКА на складе.
3. В помощь нейросети 1 создать нейросеть, ПРЕДСКАЗЫВАЮЩУЮ скорые продажи товара и его нехватку на складе. Берутся статистические данные по продажам, активности покупателей - делается ближайщий прогноз.
Данные нейросети 3 передаются нейросети 1.

Вообще такие связки нейросетей (одна нейросеть оперирует результатом работы другой нейросети) и есть искусственный интеллект.
58. starik-2005 2198 05.07.18 17:52 Сейчас в теме
(57)
Вообще такие связки нейросетей (одна нейросеть оперирует результатом работы другой нейросети) и есть искусственный интеллект.
Вообще это в тех же нейросетях называется "многослойный перцептрон". И там связи тоже разные между слоями.
59. pvlunegov 158 06.07.18 08:21 Сейчас в теме
(58) в теории нейросетей связи между слоями называются просто связями.
Многослойный перцептрон это частный случай нейросети где несколько слоев связаны сетью связей.
Я говорил про принципиально другое.
Я говорил про общее логическое взаимодействие нейросетей.
Неважно как они связаны. В общем случае они вообще никак не связаны, данные могут передаваться через почту, xml, http, любым способом.
Важно то что выходные данные одной нейросети передаются на вход другой.
Передавать данные в общем случае может алгоритм 1с по условиям и желаниям программиста.
Это дает принципиальную свободу выбора.
Например, получили данные нейросети, проанализировали их, исходя из анализа передали на обработку другой нейросети (какой именно передавать - решает алгоритм анализа данных)
60. starik-2005 2198 06.07.18 11:16 Сейчас в теме
(59)
Важно то что выходные данные одной нейросети передаются на вход другой.
Просто Вы описываете концепцию многослойного перцептрона. Там же как все устроено? Вот есть некая матрица состояний - S-элементы, и есть связи с матрицей понятий - A-элементы. Чем больше получился вес связей, тем выше вероятность, что вот именно этот А-элемент и является ответом на возбуждение. И этот А-элемент является S-элементом для второго слоя логики, который связан с понятиями другого плана. Но обучать ты систему должен комплексно, иначе как поямешь, что этот сформированный выход первого слоя к каким элементам второго привязан по весам? Так что просто без обучения это все бесполезно.
61. pvlunegov 158 06.07.18 12:21 Сейчас в теме
(60) вы сказали: "Просто Вы описываете концепцию многослойного перцептрона."
Не согласен.
Всем известно, что в многослойном перцептроне несколько слоев нейронов связаны случайными связями (эти связи образуются в момент обучения перцептрона на выполнение определенного круга задач).
У меня совершенно другая концепция.
Обычному специалисту 1с средней руки на сегодня незнакомы ни нейронные сети, ни перцептроны. Он в состоянии посмотреть в кратце что это, но не знает как с этим работать.
Зато его можно обучить работе в матлабе. и даже тому, как обучить простейшую нейросеть в матлабе для конкретной задачи.
Можно показать ему что результаты работы одной нейросети можно использовать для исходных данных работы другой нейросети.
Эта задача обучения посложнее, но можно показать на примерах.
62. starik-2005 2198 06.07.18 13:43 Сейчас в теме
(61)
Всем известно, что в многослойном перцептроне несколько слоев нейронов связаны случайными связями
Кто эти все?
Сам перцептрон уже многослоен - в нем есть слои А- и S-элементов, Но суть все-равно та же: анализ первой S-матрицы сигнальных элементов определяет А-элемент, который во второй нейросети становится S-элементом. То же самое, когда есть второй слой нейросети. Но обучаться они должны совместно, т.к. сначала ты сеть обучаешь на определенном наборе данных, а потом используешь накопленную статистику для определения связанного элемента. И тут уже эффективность повышается наличием обратной связи. И если просто взять две обученных нейросети, результат одной из откорых должен стать сигналом для второй, и не использовать совместное их обучение и обратную связь, то это снижает эффективность такого обучения и количество ошибочных суждений второй сети будет на порядок выше, чем количество ошибочных суждений первой сети, т.к. сигнал будет искажаться относительно выборки при отдельном обучении.
63. pvlunegov 158 08.07.18 15:28 Сейчас в теме
(62) Чего вы добиваетесь этим академическим спором?
Хотите поразить всех читающих своим интеллектом?
я предложил применение на практике для конкретных задач.
А вы начали и продолжаете свой спор о теории нейросетей. Зачем это?
Или вы хотите втоптать меня в грязь показав что лучше понимаете нейросети?
Окей, может вы и лучше их понимаете, я могу признать, если вам от этого станет легче. Спор окончен?
Приступим к практике?
user774630; Sintson; +2 Ответить
Оставьте свое сообщение

См. также

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    34532    ids79    40    

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство Математика и алгоритмы ДО Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    1468    Vaganov_Alexey    4    

Применение математических достижений в решении сложных задач бизнеса

Математика и алгоритмы Бесплатно (free)

Как правило, самые сложные задачи решаются с точки зрения математики очень легко. Но чтобы найти правильное решение, важно понять бизнес-цель, которую достигает эта задача. О практическом применении математических достижений для эффективного решения сложных задач бизнеса на конференции Infostart Event 2019 Inception рассказал Дмитрий Мишнов.

25.05.2020    3323    Mishnov    17    

Установка EDT 2020.2 на Ubuntu 18.04

EDT Россия Бесплатно (free)

Установка EDT 2020.2 на Ubuntu 18.04 Заметки на будущее.

12.04.2020    2467    awk    14    

Использование сборок .NET в 1С 7. и 8.x. Создание внешних Компонент. Промо

Разработка внешних компонент v7.7 v8 1cv8.cf 1cv7.md Абонемент ($m)

Данная разработка создана для использования сборок .Net в 1С через преобразование объектов и классов в COM-объекты, которые можно использовать в 1С. Достигается это путем создания класса, реализующего методы интерфейса IReflect public class AutoWrap: IReflect.

1 стартмани

28.11.2013    82103    235    Serginio    71    

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

Математика и алгоритмы Производительность и оптимизация (HighLoad) Бесплатно (free)

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    5089    ildarovich    7    

Технология разветвлённой разработки, использующая git, ci/cd

CI/CD Git (GitHub, GitLab, BitBucket) Методология управления разработкой EDT 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

Адаптация и расширение требований к разветвлённой разработке с использованием git и ci/cd, основанное на стандартах 1С

24.02.2020    5745    check2    10    

CI/CD для 1С проектов, унифицировано, с кастомизацией

CI/CD Инструментарий разработчика Бесплатно (free)

Тема CI/CD в связке с 1С не нова, но многих пугает сложность использования и поддержки, необходимость обучения команды. Про то, как унифицировать и упростить поддержку сборочных конвейеров для большого количества решений, в своем докладе на конференции Infostart Event 2019 Inception рассказал начальник отдела компании BIA-Technologies Валерий Максимов.

20.02.2020    6140    theshadowco    11    

Как работает серверный вызов в 1С Промо

Математика и алгоритмы v8::УФ Бесплатно (free)

Клиент-серверная архитектура заложена в платформе изначально — со времен «1С:Предприятие 8.0». Однако при разработке на 8.0 и 8.1 о разделении кода на клиентскую и серверную часть можно было не заботиться, поскольку на клиенте (на толстом клиенте) был доступен тот же функционал, что и на сервере. Всё изменилось с выходом платформы «1С:Предприятие 8.2», когда появился тонкий клиент. Теперь на клиенте доступен один функционал, на сервере — другой. Клиент и сервер «общаются» между собой с помощью серверного вызова. Конечно, это усложнило процесс разработки, но с другой стороны – можно создавать более оптимальные (быстрые) решения, поскольку все сложные задачи выполняются на сервере.

18.11.2017    55633    pahich    82    

О синхронизации ИБ с проектом в EDT

EDT Бесплатно (free)

Немного о работе механизма синхронизации информационной базы с проектом EDT и как эти знания можно использовать для экономии времени. Или как объяснить, что проект в рабочей области эквивалентен конфигурации информационной базы, связанной с ним.

19.02.2020    3580    check2    2    

Атака сервера кнопонажималкой

Нагрузочное тестирование Инструментарий разработчика Бесплатно (free)

Чтобы убедиться, что продукт выдержит планируемую нагрузку, необходимо провести нагрузочное тестирование – написать сценарии пользовательских действий и запустить их в несколько потоков, чтобы заранее найти проблемы в бизнес-логике и «узкие места». О том, как упростить написание сценариев тестирования для конфигурации Тест-центр с помощью фреймворка Vanessa Automation на конференции Infostart Event 2019 Inception рассказал ведущий программист компании «ПервыйБИТ» Никита Грызлов.

20.01.2020    5868    nixel    22    

Часовой на страже логов

Практика программирования Инструментарий разработчика Бесплатно (free)

При поддержке решений, которые установлены у большого количества пользователей на различных системах, очень важно вовремя получать подробную информацию о возникших проблемах. О том, как собирать логи и анализировать полученные данные в трекере ошибок Sentry на конференции Infostart Event 2019 Inception рассказал Андрей Крапивин.

13.01.2020    6485    Scorpion4eg    8    

Легкий способ обновления измененной конфигурации Промо

Инструментарий разработчика v8 Бесплатно (free)

Легкий способ обновления измененной конфигурации. Сервис подготовки расширения конфигурации

25.10.2017    23492    avk72    63    

Как управлять качеством кода 1С, используя платформу SonarQube

Рефакторинг и качество кода Инструментарий разработчика Бесплатно (free)

При быстром росте функциональности проводить визуальный Code-Review для обнаружения некачественного кода проблематично. О том, как автоматизировать проверку качества кода 1С с помощью платформы SonarQube на конференции Infostart Event 2019 Inception рассказал ведущий разработчик компании «Командор» Олег Тымко.

30.12.2019    8423    olegtymko    9    

Мониторим производительность с помощью 1С RAS

Инструментарий разработчика Производительность и оптимизация (HighLoad) v8 1cv8.cf Бесплатно (free)

Подключаемся и анализируем данные через 1С RAS. Необходимо выполнить 5 пунктов и серьезный инструмент мониторинга будет у вас в руках.

19.12.2019    11115    ivanov660    16    

Фреймворк для создания бизнес web-приложений

Прочие инструменты разработчика Бесплатно (free)

Для создания систем, решающих узкие бизнес задачи, использовать 1С бывает нецелесообразно. Хочу представить альтернативу - web фреймворк katejs. Будет интересно также тем, кто интересуется web разработкой на современном javascript.

15.10.2019    5187    nep_i    25    

Универсальная функция для программного выполнения СКД Промо

Инструментарий разработчика Универсальные функции v8::СКД 1cv8.cf Бесплатно (free)

Часто встречаются вопросы на форумах о программном формировании СКД. Вроде и информации много по этому поводу, но... Все как всегда :) Собственно, в описании без лишних слов выложен текст общей функции, в которую, для выполнения отчета, нужно передать (минимум 2 параметра): СКД и ТабличныйДокумент.

20.05.2015    30513    dj_serega    18    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    27930    YPermitin    24    

Кодогенерация и метагенерация в 1С

Практика программирования Инструментарий разработчика Бесплатно (free)

В своем докладе на конференции INFOSTART EVENT 2018 EDUCATION Дмитрий Белозеров рассказал о разработке инструмента, позволяющего программно работать с метаданными 1С и писать скрипты для выполнения тех же действий, которые выполняет разработчик в конфигураторе –  с какими сложностями и нюансами пришлось столкнуться, и что получилось в итоге.

26.08.2019    8999    kirovsbis    28    

Иерархия без "В ИЕРАРХИИ"

Математика и алгоритмы v8 Бесплатно (free)

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    12302    ildarovich    19    

Перевод интерфейса конфигурации с использованием программы 1С:Переводчик Промо

Инструментарий разработчика v8 Бесплатно (free)

Перевод текстов интерфейсов конфигураций без использования технологии памяти переводов приводит к рассогласованности терминологии, когда один и тот же объект в конфигурации в разных меню может называться по-разному. Решить эту проблему можно используя программу 1С:Переводчик.

09.02.2015    33013    boogie    21    

1С:EDT. Первые шаги… или есть ли альтернатива конфигуратору?

EDT v8 Бесплатно (free)

Заменить конфигуратор сложно, а в некоторых случаях невозможно, если, например, нужно оперативно подправить код непосредственно в рабочей конфигурации…

15.08.2019    23481    ellavs    105    

Обработчики событий при записи объектов. Зачем и что за чем?

Математика и алгоритмы v8 Бесплатно (free)

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    49040    AlbinaAAA    28    

Отказ от использования хранилищ 1С, переход на Git.

Инструментарий разработчика Разработка Бесплатно (free)

Валерий Максимов в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION делится опытом перехода нескольких команд (более 100 разработчиков) от использования хранилищ 1С на системы контроля версий Git.

25.07.2019    10633    theshadowco    31    

Будни автоматизации или "мне нужна программка для 3D упаковки" Промо

Практика программирования Математика и алгоритмы Оптовая торговля Оптовая торговля v8 1cv8.cf УУ Бесплатно (free)

Автоматизация отечественных предприятий, которой приходиться заниматься, это нужная и высокооплачиваемая, но довольно нервная работа. Выручает юмор. Например, при общении с требовательным клиентом можно вспомнить анекдот: "Держась руками за стену, на ногах еле стоит мужик. К нему пристает ребенок: "Ну, папа, пожалуйста, сделай мне кораблик!", папа отвечает: "Ага! - Сейчас все брошу и пойду делать тебе кораблик!". Про один такой сделанный для клиента "кораблик" и хочется рассказать. Надеюсь, совместное погружение в теплое ламповое (то есть клиентоориентированное) программирование доставит Вам положительные эмоции, да и задача попалась интересная. Поплыли?

24.03.2014    45247    ildarovich    116    

Как проводятся документы в типовых конфигурациях от 1С

Математика и алгоритмы Практика программирования Разработка v8::ОУ ERP2 УТ11 Россия УУ Бесплатно (free)

В свое время, когда только начинал шаги в 1С и изучал, как проводятся документы в конфигурациях на платформе 1С по книге "Разработка управляемого интерфейса" (Хрусталева Е.Ю.), и там были представлены примеры совсем далекие от того, как сейчас проводятся документы в современных конфигурациях от 1С.

24.07.2019    27216    skv_79    35    

Управление качеством кода

Математика и алгоритмы Рефакторинг и качество кода v8 Бесплатно (free)

О SonarQube, АПК, EDT. Какие преимущества дает их использование. Для каких команд подходит.

22.07.2019    16345    Stepa86    33    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    35435    ids79    27    

Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок Промо

Математика и алгоритмы Бесплатно (free)

Одной из наиболее важных задач каждого предприятия, осуществляющего доставку грузов в крупных населенных пунктах, является сокращение издержек. Возможное решение данной проблемы заключается в сокращении пробега автотранспорта и, как следствие, уменьшении расхода ГСМ. Появляются такие вопросы ... - СКОЛЬКО НУЖНО МАШИН ДЛЯ РАЗВОЗКИ КОНКРЕТНОГО ОБЪЕМА ГРУЗА ПО АДРЕСАМ ДОСТАВКИ ? - КАК РАЗБИТЬ ТОЧКИ ДОСТАВКИ НА ОПТИМАЛЬНЫЕ ПО ПРОБЕГУ И ЗАГРУЗКЕ МАШИН МАРШРУТЫ ? ... В этой статье Вы найдете один из многих способов получить ответ на эти вопросы.

10.02.2016    59729    mi1man    20    

Что делает "В ИЕРАРХИИ" в запросе?

Математика и алгоритмы v8 Бесплатно (free)

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    26025    YPermitin    34    

Интеграция сценарного тестирования в процесс разработки

Практика программирования Инструментарий разработчика Бесплатно (free)

Разработчик системы «Тестер» Дмитрий Решитко в своем докладе на конференции INFOSTART EVENT 2018 EDUCATION показывает, что процесс тестирования можно очень плотно интегрировать в процесс разработки, что внедрение тестирования – это возможность развития программиста как такового, позволяющая ему упорядочивать ход мыслей и оставаться «в фокусе». Навыки построения процесса кодирования на стыке с тестированием сокращают время на концентрацию, освобождают от страха перед изменениями и улучшают память разработчика.

08.07.2019    9146    grumagargler    7    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    51763    ids79    25    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Перенос данных из 1C8 в 1C8 v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    66974    tormozit    27    

1Script.Web. Интернет-приложения на языке 1С

WEB OneScript Инструментарий разработчика v8 Бесплатно (free)

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

20.05.2019    20304    Evil Beaver    33    

Регистры накопления. Виртуальные таблицы. Часть №1: Обороты

Практика программирования Математика и алгоритмы Разработка v8 1cv8.cf Бесплатно (free)

Описание работы платформы 1С:Предприятие 8.2 с виртуальной таблицей "Обороты" регистров накопления.

20.05.2019    27089    YPermitin    7    

Выдержки из книги Чистый код

Математика и алгоритмы Бесплатно (free)

Недавно я прочитал книгу "Чистый код" Роберта Мартина (Robert Cecil Martin). В ней описываются принципы организации и форматирование исходного кода программы так, чтобы в дальнейшем было легко поддерживать такой код. Эта книга является библией для многих программистов, но вот в среде программистов 1С, к сожалению, не очень распространено чтение подобной фундаментальной литературы. Книга более 400 страниц и так много порой лениво читать, да и времени всегда не хватает. По этому я решил выделить в виде цитирования по разделам самые важные моменты. А также снабдил текст своими примерами кода.

16.05.2019    10397    FreeArcher    105    

Сервис обмена кодом Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Бывало так, что вам нужно быстро показать кому-то свой код, но опубликовать его негде, так как популярные сервисы просто не поддерживают раскраску кода 1С? Теперь решение есть!

26.06.2015    20449    Infactum    23    

Быстрый ввод неудобных символов

Пользователю системы Инструментарий разработчика Бесплатно (free)

Использование Alt-кодов для ввода “[”, “]”, “”, “&”, “#”, “|”

15.04.2019    10659    pparshin    28    

Что такое алгоритм?

Математика и алгоритмы Бесплатно (free)

Как ответить на этот вопрос и не попасть пальцем в небо.

25.02.2019    8260    mkalimulin    274    

Git + 1С. Часть 2. Реализация Git workflow в 1С-разработке по шагам

Инструментарий разработчика Управление проектом v8 1cv8.cf Бесплатно (free)

В этой части мы рассмотрим наиболее распространённую схему workflow при групповой разработке с использованием Git. Как приступить к доработке по поставленной задаче; исправить ошибку, обнаруженную на этапе тестирования; отправить свой код на слияние в предстоящий релиз; и т.д. Постараемся охватить большинство задач, составляющих основной цикл разработки

28.01.2019    17377    stas_ganiev    30    

XDTO - это просто Промо

Математика и алгоритмы v8 1cv8.cf Бесплатно (free)

С появлением платформы 8.1 фирма “1С” представила механизм, носящий интригующее название XML Data Transfer Objects или, если коротко - XDTO. По традиции, документирование механизма составлял тот, кто хорошо разбирался в вопросе, а стало быть опустил “и так понятные” с его точки зрения моменты. Целью данной статьи (или цикла статей, как получится) стало желание поделиться накопленным опытом. Мне кажется, многие неочевидные вещи в механизме XDTO необходимо осветить получше.

24.12.2012    293095    Evil Beaver    173    

Криптовалюты, а также иные взгляды на природу денег в терминах 1С

Математика и алгоритмы Бесплатно (free)

Это отчасти полемическая статья. Я задумал написать ее как ответ на другую хорошую статью о криптовалютах. Хотелось поспорить с некоторыми утверждениями автора, а ещё больше с некоторыми комментариями. А чтобы текст был более понятным для местной аудитории, я решил использовать, где только возможно, терминологию и практику 1С.

28.01.2019    6214    mkalimulin    89    

Как писать код? Технологии древних цивилизаций, или все новое - это хорошо забытое старое

Математика и алгоритмы Бесплатно (free)

Все современные технологии - это развитие и доведение до ума (или маразма) древних идей. За последнее время не придумали ничего нового - все, что мы видим, было придумано тысячи лет назад. Не является исключением и программирование, которое в сути своей является переводом с языка условностей технического задания или заявки пользователя в формализованный и абсолютно точный язык математической логики. А логику придумали (по крайней мере первыми опубликовались в ведущих научных журналах) еще древние греки.

23.01.2019    11626    starik-2005    43    

Роберт Мартин: "Будущее программирования" / Robert Martin: "The Future of Programming"

Математика и алгоритмы Блоги Бесплатно (free)

Перевод-транскрибация выступления.

14.01.2019    15629    Vladimir Litvinenko    38    

1C:Enterprise Development tools (EDT) или кодим в Eclipse Промо

EDT v8 Бесплатно (free)

Как и выход мобильной платформы был для оооочень большого числа разработчиком открытием, так и я уверен, что и о новом конфигураторе - тоже мало кто слышал. Поэтому давайте попробуем пробежаться по новому конфигуратору. (Много больших картинок)

11.04.2015    76963    DitriX    297    

Многоязычное программирование: создание систем с использованием нескольких языков

Математика и алгоритмы Россия Бесплатно (free)

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

09.01.2019    11827    kalyaka    36    

Размышления о хороших практиках, навеянные одной статьей

Математика и алгоритмы Бесплатно (free)

Прочитал статью "Ректальное программирование: основы для практикующих 1С-программистов". Статья очень хорошая и своевременная. Но у меня возникло некоторое сомнение. А достаточно ли автор любит и понимает предмет, о котором пишет? Насколько богат его опыт ректального программирования и занимался ли он им вообще? Как человек обладающий многолетним опытом РП, я решил представить вам необходимые дополнения к статье.

21.12.2018    6791    mkalimulin    61    

Проставление большого количества галочек в активном окне винды Промо

Практика программирования Сервисные утилиты Инструментарий разработчика Россия Бесплатно (free)

Как проставить большое количество галочек подряд в любом окне винды

07.11.2010    30720    Boris-Leleko    9    

Ректальное программирование: основы для практикующих 1С-программистов

Математика и алгоритмы Бесплатно (free)

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

19.12.2018    42980    for_sale    351    

[8.3] Анализ планов запросов (Управляемая консоль отчетов)

Консоль запросов v8 1cv8.cf Бесплатно (free)

Новый инструмент! Позволяет удобно работать с планами запросов, анализ планов в файловой базе.

19.11.2018    19345    Evg-Lylyk    6    

Метрики, графики, статистика = Prometheus + Grafana

Инструментарий разработчика v8 v8::ОУ Россия Бесплатно (free)

Снятие метрик из базы данных 1С с хранением в Phrometheus и красивое оформление на основе Grafana. Или как мы создавали комфортные условия административному персоналу на отдельно взятом складе.

23.10.2018    18471    freewms    75