Корпоративный мозг на 1С и Python

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

Управление - Управление проектом

Искусственная нейронная сеть Python и теория хаоса сложности алгоритмическая сложность вычислимость NP-трудные задачи дигитализация бизнеса digital-трансформация Reservoir computing Neural

78
Перед вами краткая инструкция, как можно быстро начать digital-трансформацию компании с помощью нейронных сетей на 1С, а также с использованием, в качестве дополнения, ресурсов Python.

 

КОРПОРАТИВНЫЙ МОЗГ НА 1С И PYTHON

 

 

Вектор вашего бизнеса только тогда направлен в

сторону совершенства, когда вы пользуетесь

научными методами в управлении.

Зима-Барская Е.

 

В каждой естественной науке заключено столько

истины, сколько в ней есть математики.

Кант И.

 

Высшее назначение математики состоит в том,

чтобы находить скрытый порядок в хаосе, который нас окружает

 Винер Н.

 

 

Менеджмент вашей компании еще не пользуется нейросетями? Тогда мы идем к вам!

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

Если попытаться ответить на вопрос "Каким информационным критериям соответствует  современное успешное предприятие?", то кратко можно дать такую общую формулировку: успешное предприятие - это интеллектуальное предприятие, в котором конкурентно мыслят, принимают научно обоснованные и в тоже время быстрые управленческие решения, инновационно решают основные задачи бизнеса.

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

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

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

По прогнозам консалтинговой компании McKinsey & Company, доля цифрового бизнеса составит до 34% мирового ВВП уже к 2020 году. Процесс цифровой трансформации актуален для любой сферы нашей жизни. Мобильное приложение налоговой службы, онлайн-банкинг, блокчейн-реестры в страховых компаниях, техподдержка клининговой компании в виде чат-бота, таргетированная реклама и медицинская диагностика использующие большие данные и искусственный интеллект, торговые маркетплейсы — все эти инновационные “фишки” являются далеко не полным набором примеров использования современных цифровых технологий.

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

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

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

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

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

 

Эра цифрового бизнеса

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

Компьютерное моделирование работы человеческого мозга представлено в мире двумя крупными проектами: OpenWorm - по симуляции нервной системы нематоды С. Elegans (302 нейрона) и HumanBrainProject (НВР) – планировалось построить компьютерную модель всего человеческого мозга с миллиардами нейронов и триллионами синапсов. Бюджет проекта HumanBrainProject составляет 1,6 млрд.$, срок финансирования проекта рассчитан на 10 лет.

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

Технологии AI стремительно внедряют в банковскую, медицинскую и многие другие сферы. В течении  первых 3-х месяцев 2018 года в индустрии искусственного интеллекта был поставлен рекорд по инвестициям. По данным международной сети аудиторских фирм PwC, общее число инвестиций в сферу искусственного интеллекта составило $1,9 млрд.

AI-системы активно внедряются и в финансы. Пример тому стартап для поиска удачных капиталовложений от Google – Kensho. Журнал «Форбс» назвал этот проект искусственного интеллекта «финансами будущего». Агентство Standard&Poor’s покупает компанию Kensho за $550 млн. Это самый крупный контракт, связанный с искусственным интеллектом. Kensho - платформа аналитики рынка объединяет статистические вычисления с большими данными и обработкой естественного языка.  Системы машинного обучения платформы Kensho извлекают данные из Интернета и оценивают корреляции между мировыми событиями и их влиянием на цены финансовых активов. Информация, полученная системой искусственного интеллекта Kensho из прямой трансляции новостей, используется в принятии инвестиционных решений.

Нельзя не отметить ряд других хороших примеров применения интеллектуальных систем в экономике. Такие банки, как UBS и Deutsche Bank, используют систему искусственного интеллекта Sqreem (Sequential Quantum Reduction and Extraction Model) для разработки профилей потребителей и сопоставления их с продуктами, которые потребители, скорее всего, захотят использовать.

Компания ZestFinance разработала систему Zest Automated Machine Learning (ZAML) для кредитного андеррайтинга. ZAML задействует компьютерное обучение для анализа десятков тысяч традиционных и нетрадиционных переменных (от транзакций покупки до того, каким образом клиент заполняет форму), используемых в кредитной индустрии, для оценки заемщиков. Платформа особенно полезна для присвоения кредитных баллов клиентам с небольшой кредитной истории, таким как миллениалы.

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

Однако у вас нет  ZAML, Kensho или Sqreem. Как быть вам ? Об этом я расскажу ниже, и сразу отмечу, что для небольших компаний, которые используют в качестве учетной системы 1С, также пришло время активно разрабатывать свои собственные частные решения на базе искусственного интеллекта.

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

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

 

Neuro vs NP

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

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

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

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

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

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

Классический пример алгоритмически неразрешимой задачи - создать алгоритм, который по описанию проблемы создает алгоритм для решения этой проблемы. По этому вопросу существует теорема Райса: "никакое нетривиальное свойство вычислимых функций не является разрешимым", смысл которой сводится к тому, что для некоторого свойства функции fA, вычисляемой по алгоритму A, нельзя построить общий алгоритм, который по произвольному алгоритму A определял бы, обладает ли вычисляемая им функция этим свойством.

И здесь мы хорошо видим преимущества нейросетей. Ведь с точки зрения информатики, нейросеть - это вычислительная модель с большим числом параллельно действующих процессов, объединенных множеством связей. Грубо говоря, нейросеть представляет собой функцию типа Y=F(X), выходом Y которой является некоторое управленческое решение или содержание бизнес-процесса, а входом X служит некоторая императивная информация (например, параметры каждой сделки с клиентами).

Как известно, суть обучения нейросети заключается в поиске оптимального значения F(X), при котором достигается наилучшая приспособленность бизнес-процесса/управленческого решения к поставленной задаче (максимизация или минимизация того или иного бизнес-показателя).

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

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

 

Из хаоса добыть порядок

При изучении перспектив и методов дигитализации бизнеса, следует уделить внимание современным возможностям  прикладной математики, которая рассматривается через призму фундаментального изменения парадигмы современной науки — её переориентации на преимущественное изучение нелинейных процессов, как ведущих в объяснении наиболее актуальных для человека сложных явлений, в т.ч. явлений в сфере бизнеса.

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

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

Аксиома управления – нельзя сделать систему управляемой, если она не наблюдаема и не позволяет оценить последствия управления. Поэтому приоритетной функцией управления в быстро меняющейся среде становится прогнозирование.

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

Однако, исследования Эдварда Лоренца и других ученых теории хаоса доказали, что с помощью стандартных алгоритмов долгосрочное прогнозирование невозможно во всех открытых сложных системах. Малейшее изменение первоначальных условий приводит к иным результатам.

В тоже время, такое расширение нейронных сетей, как резервуарное вычисление (Reservoir computing) показало результаты прогнозирования совершенно нового уровня. При исследовании динамики архетипической хаотической системы,  описываемой уравнением Курамото — Сивашинского,  нейросетевой метод на базе Reservoir computing смог точно предсказать, как хаотическая система будет эволюционировать в течение восьми «времён Ляпунова». Т.о. методы нейроматематики позволяют заглянуть в восемь раз дальше по сравнению с классическими методами прогнозирования. Временем Ляпунова называют время, которое требуется для экспоненциальной дивергенции двух практически идентичных состояний хаотической системы. Как таковое, оно обычно определяет горизонт предсказуемости.

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

 

Преимущества нейросетей перед обычными алгоритмами

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

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

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

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

 

Время для нейро-1С

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

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

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

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

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

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

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

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

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

 

Три варианта

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

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

Прежде всего, определимся со средой разработки.

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

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

Учитывая все вышесказанное, у нас есть три варианта реализации нашей задачи по составлению и обучению нейронной сети:

1-й вариант: все реализуем средствами 1С.

2-й вариант: используем из 1С данные, расположенные в таблицах SQL-сервера, а саму нейросеть и обработку данных выполняем на Python.

3-й вариант: гибридный - часть задач реализуем на 1С, например, создание выборки и обработки данных, а часть задач - на Python (выбираются задачи с максимальным приоритетом, требующие сложных расчетов).

 

 

Ограничения и преимущества

 

Проанализируем все 3 варианта реализации нейронной сети.

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

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

Функционала 1С для работы с нейронными сетями достаточно, т.к. в 1С существует понятие рандомного числа, есть экспонента, а любую операцию над матрицами можно выразить в элементарных арифметических выражениях (сложение, умножение). Конечно, это потребует гораздо большего количества операций и строк кода, по сравнению с Python. Однако отпадет необходимость в найме внешнего разработчика, которому понадобится время, чтобы вникнуть в особенности учета предприятия. А так же не понадобится налаживать новые коммуникации внутри коллектива.

2-й вариант: может возникнуть необходимость в реализации на Python, т.к. некоторый ряд задач предполагает использования математических операций, не доступных в 1С. Либо, например, нам потребуется создавать нейронную сеть с большим количеством скрытых слоев и сотнями нейронов в каждом из них. Учитывая, что данные хранятся на SQL-сервере, то мы просто организуем доступ из Python к базе данных 1С, а все расчеты будет производить в Python.

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

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

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

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

 

Выбираем конфигурацию

В данной статье я хочу остановиться на использовании/реализации нейронной сети встроенными методами 1С.

Разберем 3 примера. Начнем с простейшей задачи регрессии.

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

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

 

 

Пример №1

Мы можем, например, научить нейронную сеть «умножать на 2», не говоря, что ей надо брать число и умножать его на «2».

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

 

Рис.1 «Модель однослойной сети прямого распространения с одним нейроном в скрытом слое, одним входным и одним выходным нейроном»

 

Для ввода данных обучающей выборки в конфигурации создан документ. Данные обучающей выборки вносятся в табличную часть документа. Для этого в табличной части используются колонки: «Число1», «Число2», «Ответ», «Ответ2» (рис.2).

Для обучения нейронной сети «умножать на 2» была сформирована обучающая выборка (рис.2)

Рис.2 «Заполнение формы документа для обучения нейронной сети умножению на 2»

 

Обучающая выборка содержит 7 примеров. Столбец «Число1» содержит входные значения, столбец «Ответ» - выходные значения.

На форме документа произвольно задается вес единственного синапса нашей нейронной сети с точностью до 4-х знаков (задействуем в качестве синапсов некоторым весом - поле ввода «Вес1»): 4,0000.

Для запуска обучения нейронной сети используется кнопка «Умножение» (рис.2).

После проведения 3 итераций обучения, были получены следующие результаты (табл.1):

 

№ шага

Вес синапса

после обучения

Ответ НС

Ответ обучающей выборки

1

3

15

10

2

2,5

5

4

3

2,25

6,75

6

4

2,125

8,5

8

5

2,0625

20,625

20

6

2,0313

16,2504

16

7

2,0157

14,1099

14

8

2,0079

10,0395

10

9

2,004

4,008

4

10

2,002

6,006

6

11

2,001

8,004

8

12

2,0005

20,005

20

13

2,0003

16,0024

16

14

2,0002

14,0014

14

15

2,0001

10,0005

10

16

2,0001

4,0002

4

17

2,0001

6,0003

6

18

2,0001

8,0004

8

19

2,0001

20,001

20

20

2,0001

16,0008

16

21

2,0001

14,0007

14

 

Таблица 1 «Результаты обучения нейронной сети умножению числа на 2»

Т.о. после обучения нейронной сети на выборке из таблицы 1 мы получаем вес синапса нашей НС, равным «2,0001». Поскольку модель нашей однослойной сети с одним нейроном предполагала простую линейную зависимость, обученная нейронная сеть будет вычислять выходное значение по формуле:

S = X*W

где Х – входной сигнал, W – вес синапса скрытого слоя.

 

В данном случае:

S = X*2,0001.

 

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

Ниже приведен код 1С, с помощью которого наша нейронная сеть обучается «умножать на 2».

Мы на каждом шаге меняем вес синапса:

Объект.вес = Объект.вес + (ответВыборка - ответНС) /ответВыборка,

с учетом полученного отклонения рассчитанного значения:

ответНС = вес1*Объект.вес,

 от ответа обучающей выборки:

ответВыборка =строкаТЧ.Ответ

////однослойный перцептрон с одним входным нейроном	
Для Каждого строкаТЧиз Объект.ТабличнаяЧасть1 Цикл 
	вес1 = строкаТЧ.число1;
	ответНС = вес1*Объект.вес;
	ответВыборка = строкаТЧ.Ответ;

	разница = ответВыборка - ответНС;
	отклонение = разница/ ответВыборка;
	Объект.вес = Объект.вес + отклонение;  
	
	Записать();
КонецЦикла;

 

 

Пример №2

Следующий пример: обучение нейронной сети сложению двух чисел.

Для решения данной задачи использовался однослойная сеть прямого распространения с одним нейроном в скрытом слое, двумя входными и одним выходным нейронами (рис.3).

 

Рис.3 «Модель однослойной сети прямого распространения с двумя входными нейронами Х1 , Х2 и одним выходным нейроном Y»

 

В данной модели имеется два синапса: W1 и W2, в документе им соответствуют реквизиты формы: «Вес1» и «Вес2» (см. рис.4).

Для обучения нейронной сети использовалась обучающая выборка, представленная на рис.4.

 

Рис.4 «Обучающая выборка для обучения нейронной сети сложению двух чисел»

 

После выполнения одной итерации обучения были получены следующие результаты:

 

№ шага

Вес синапса1 после обучения (число1/W1)

Вес синапса2 после обучения (число2/W2)

Ответ НС (Y)

Ответ обучающей выборки

1

1,9714

1,1367

19

7

2

1,5141

0,8275

17,2099

10

3

1,4037

0,7642

4,6832

4

4

1,3908

0,7571

5,1

5

5

1,2745

0,6902

7,0774

6

6

1,1839

0,6388

14,8156

13

7

1,1353

0,6118

10,7488

10

8

1,123

0,6051

9,1707

9

 

 

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

 

 

В данном алгоритме мы на каждой итерации меняем вес синапса1=W1 и вес синапса2=W2,

 

Весi  =Весi  + Отклонение* Весi /( Весi  + Весj ), где i=1;2, j=2;1,

 

с учетом полученного отклонения:

 

отклонение = (ответВыборка-  ответНС) /ответВыборка,

 

 между рассчитанным значением нейронной сети:

 

ответНС=вес1*Объект.вес1+ вес2*Объект.вес2,

 

 и ответом обучающей выборки:

ответВыборка =строкаТЧ.Ответ.

 

 

////однослойнаясеть прямого распространения с двумя входными нейронами


Для Каждого строкаТЧ из Объект.ТабличнаяЧасть1 Цикл

    вес1 = строкаТЧ.число1;
    вес2 = строкаТЧ.число2;
    ответНС = вес1*Объект.вес1 + вес2*Объект.вес2;
    ответВыборка = строкаТЧ.Ответ;

    разница = ответВыборка - ответНС;
    отклонение = разница/ответВыборка;

    Объект.вес1 = Объект.вес1 + отклонение*Объект.вес1/(Объект.вес1 + Объект.вес2); 
    Объект.вес2 = Объект.вес2 + отклонение*Объект.вес2/(Объект.вес1 + Объект.вес2); 

    Записать();
КонецЦикла;

                                                        

 

Мы получили более-менее адекватные ответы, однако они не точны. Дело в том, что обычные арифметические действия нейронные сети  обучаются делать не очень точно.

 

Число 1

Число 2

Ответ нейронной сети

Сумма

Отклонение, %

15

12

24,1062

27

10,71778

6

3

8,5533

9

4,963333

7

9

13,3069

16

16,83188

9

3

11,9223

12

0,6475

6

5

9,7635

11

11,24091

9

5

13,1325

14

6,196429

6

7

10,9737

13

15,58692

10

6

14,8606

16

7,12125

 

В расчетах тестовой выборки получаем среднее отклонение 9,16%, с максимальным отклонением 16,83%. Т.о. наша нейронная сеть выдает ответ с точностью 83,17%, для решения практических задач этот показатель чрезвычайно мал. Однако, для задач связанных с простыми арифметическими действиями – это вполне очевидная норма, так как представленная модель нейронной сети не рассчитана на задачи подобного алгоритмического типа.

 

Пример №3

Рассмотрим реализацию задачи классификации на конкретном примере.

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

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

Я рассматриваю 2 параметра для упрощения приводимого расчета. В реальных задачах необходимо рассматривать несколько десятков параметров. Что дает более точную выборку клиентов, предрасположенных к уходу. А далее компании проводят опрос обозначенной группы клиентов, с целью получения обратной связи по поводу причин отказа от продукции и услуг компании. После того, как определены ключевые причины оттока, разрабатывается план по их устранению и система ключевых показателей, отражающих прогресс в расширении «узких» мест. 

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

 

Сформируем обучающую выборку, основываясь на следующем предположении:

Есть пример клиента, имеющего значение параметра 1 -  1.0 и параметра 2 -  1.0, который, является клиентом из класса 1. Второй пример относится к клиенту, имеющему большее значение параметра 1 — 3.0 и значение параметра 2 — 1.0, который является клиентом из класса 2. Т.е. первый клиент последний раз совершал денежную операцию 1 день назад имея среднюю частоту покупок 1 раз в 1 день. Второй клиент совершил последнюю денежную операцию 3 дня назад, имею среднюю частоту 1 раз в 1 день. 

 

Т.о. мы формируем выборку, в которой указываем при каждом сочетании параметра 1 и параметра 2, к какому классу относится клиент, признак принадлежности к «классу 1» = 1,«классу 2» = 0.

Для формирования выборки опять используем документ, в котором длину укажем в колонке «Число1» параметр 1, а параметр 2 в колонке «Число2» табличной части документа, ответ или признак класса в колонке «Ответ» (рис.5). Для данной задачи мы будем создавать нейронную сеть и поэтому реквизиты документа «Вес1» и «Вес2» использоваться не будут.

 

Рис.5 «Обучающая выборка для задачи классификации»

Для решения данной задачи использовалась модель  однослойной сети прямого распространения с двумя входами, двумя выходами  и N-нейронами в скрытом слое (рис.6).  Обучение нейронной сети производилось с использованием алгоритма обратного распространения ошибок.

 

Рис.6 «Модель однослойной сети прямого распространения с N-нейронами в скрытом слое»

 

Для создания модели нейронной сети средствами 1С, были созданы:

- Справочник «Входной слой» (рис.7),

- Справочник «Скрытый слой» (рис.8),

- Справочник «Выходной слой» (рис.9),

- Справочник «Сеть» (рис.10).

Рис.7 «Форма списка справочника «Входной слой»»

 

Рис.8 «Форма списка справочника «Скрытый слой»»

 

Рис.9 «Форма списка справочника «Выходной слой»»

 

В первые три справочника содержат наименования нейронов каждого из указанных слоев. Справочник «Сеть» содержит веса синапсов, соединяющие нейроны (реквизиты «Вход» и «Выход») из различных слоев (рис.10), с указанием веса синапса в реквизите «Вес». Если вес указан, как нулевой, значит, связь между указанными нейронами отсутствует.

 

Рис.10 «Форма списка справочника «Сеть»»

 

Для работы и обучения нейронных сетей используются матрицы и операции над ними: сложение, умножение.

В Python есть возможность работать с подобными типами переменных.

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

«Ключ» используется в качестве наименования синапса: ("Синапс"+Строка(нн)+"_"+строка(НомерНейрона), где нн - количество нейронов скрытого слоя.

Параметр «Значение» содержит вес соответствующего синапса:

«Получитьвес(ПолучитьВершинуВход(нн), ПолучитьВершинуСкрытую(НомерНейрона))».

Структура для хранения данных значения каждого синапса задается следующим образом:

///////////////////////////////
//веса синапсов (начало)

//Для скрытого слоя
//Вес от Х к Y
//ХiYj

СтруктураСкрытогоСлоя = Новый Структура;

Для нн = 1 По 2 Цикл

    Для НомерНейрона = 1 По НейроныСкрытый Цикл

        СтруктураСкрытогоСлоя.Вставить("Синапс"+Строка(нн)+"_"+строка(НомерНейрона), получитьвес(ПолучитьВершинуВход(нн), ПолучитьВершинуСкрытую(НомерНейрона)));

    КонецЦикла;

КонецЦикла;



//Для выходного слоя
//Вес между Y к С
//YiСj

СтруктураВыходногоСлоя = Новый Структура;     

Для НомерНейрона = 1 По НейроныСкрытый Цикл

    Для нн = 1 По 2 Цикл

        СтруктураВыходногоСлоя.Вставить("Синапс"+Строка(НомерНейрона)+"_"+строка(нн), получитьвес(ПолучитьВершинуСкрытую(НомерНейрона), ПолучитьВершинуВыход(нн)));

    КонецЦикла;

КонецЦикла;

////веса синапсов (конец)
///////////////////////////////

В процессе выбора архитектуры нейронной сети количество нейронов скрытого слоя может варьироваться.  В коде есть возможность указывать необходимое количество нейронов скрытого слоя в переменной «НейроныСкрытый».

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

///////////////////////////////
//

Функция ПолучитьВершинуВход(ном)     
    имяХ = "Х" + ном;
    Возврат Справочники.ВходнойСлой.найтипонаименованию(имяХ);           
КонецФункции


Функция ПолучитьВершинуВыход(ном)  
    имяУ = "С" + ном;
    Возврат Справочники.ВыходноСлой.найтипонаименованию(имяУ);           
КонецФункции


Функция ПолучитьВершинуСкрытую(ном)
    имяС = "У" + ном;
    Возврат Справочники.СкрытыйСлой.найтипонаименованию(имяС);
КонецФункции

//
///////////////////////////////

 

Для того, чтобы нейронная сеть «правильно» обучилась классифицировать клиентов, она должна в процессе обучения построить функцию-классификатор, которая будет разделать клиентов на 2 множества (рис.11).

 

Рис.11 «Графическое представление исходной выборки клиентов»

 

 

Данные множества можно разделить некоторой функцией. Однако нас интересуют такие множества, которые можно разделить линейной функцией.

Для этого произведем нормировку входных данных по формуле: 

 

Применим этот расчет, как для нормирования значения параметра 1, так и параметра 2.

В результате получим новое нормированное множество входных данных вида:

 

Рис.12 «Нормированная входная выборка»

 

После того, как значения обучающей выборки нормированы, необходимо рассчитать значение входного сигнала для каждого нейрона скрытого слоя (рис.13). В качестве функции активации будем использовать обычную сигмоидальную функцию: 

 

Рис. 13«Простая модель расчета выходного сигнала для нейронов скрытого слоя Yi»

 

Однако в нашем случае в качестве  мы будем использовать нормированные значения .

Перед нами стоит вопрос реализации произведения матриц в 1С.

 

 

В 1С произведение матриц реализовано путем перебора в двойном цикле элементов двух структур, либо табличных частей.

Т.о. данная процедура, с использованием структуры в качестве массива, реализована в 1С следующим образом:

////////////////////////////////////////////                                        
//РезУ_i-й для скрытого слоя
//РезУi_n, где i-номер нейрона скрытого слоя, n-номер строки обучающей выборки
//в "РезУ" столько строк, сколько записей в ТЧ

Для НомерНейрона = 1 По НейроныСкрытый Цикл
    Для кк = 0 по (Объект.ТабличнаяЧасть1.количество()-1) Цикл
        Для нн = 1 По 2 Цикл      
            Ключ = "Синапс"+строка(нн)+"_"+строка(НомерНейрона);
            СкрытогоСлоя=СтруктураСкрытогоСлоя[Ключ];
            //перебираем ТЧ документа
            Если нн=1 Тогда
                весСтр0 = Объект.ТабличнаяЧасть1[кк].Число1;
                ВесСтр = 2 * ( весСтр0 - мин1 ) / (макс1-мин1) – 1
            Иначе
                весСтр0 = Объект.ТабличнаяЧасть1[кк].Число2;
                ВесСтр = 2 * ( весСтр0 - мин2 ) / (макс2-мин2) - 1
            КонецЕсли;                                                                       
            резСумма = резСумма - СкрытогоСлоя*ВесСтр;                                                                                 
        КонецЦикла;

        РезУ.Вставить("резУ"+строка(НомерНейрона)+"_"+строка(кк), 1/(1+Exp(резСумма)));
        резСумма = 0;
    КонецЦикла;
КонецЦикла;

//           
////////////////////////////////////////////

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

Все последующие блоки, в частности, основные блоки алгоритма обратного распространения ошибок: 

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

Рассмотрим одинаковые расчеты с использованием системы учета 1С 8.3, на управляемых формах и с использованием Python.

Пример реализации одного из блоков с произведением матриц в системе учета 1С 8.3:

////////////////////////////////////////////
//результат на выходе скрытого слоя
//начало

//В "Рез_и" столько записей, сколько строк в ТЧ документа

Рез_и = Новый Структура;

резСумма_и = 0;

Для нн = 1 По 2 Цикл

    Для кк = 0 по (Объект.ТабличнаяЧасть1.количество()-1) Цикл
        
        Для НомерНейрона = 1 По НейроныСкрытый Цикл
            Ключ = "резУ" + строка(НомерНейрона) + "_" + строка(кк);
            РезУ_= РезУ[Ключ];
            Ключ2 = "Синапс"+строка(НомерНейрона) + "_" + строка(нн);
            ВыходногоСлоя = СтруктураВыходногоСлоя[Ключ2];                           
            резСумма_и = резСумма_и - ВыходногоСлоя*РезУ_;
        КонецЦикла;

        Рез_и.Вставить("рез"+строка(нн)+"_"+строка(кк), 1/(1+Exp(резСумма_и)));
        резСумма_и = 0;

    КонецЦикла;                                     

КонецЦикла;

/////////////////////

Ниже пример аналогичной операции на Python:

self.who += self.lr * np.dot((output_errors * final_outputs * (1.0 - final_outputs))

Данный код на Python, конечно, гораздо менее громоздкий, чем в 1С, т.к. Python обладает встроенными инструментами для работы с матрицами, как я уже писала ранее. Однако работа с Python требует новых знаний и постоянного обращения к данным, хранящимся в базе данных 1С. Обращение к данным 1С и их последующая обработка будут требовать дополнительных работ, что будет вполне соизмеримо с выполняемой работой с матрицами в 1С.

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

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

 

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

В общем виде вектор, это набор параметров какой-либо системы, участвующих в принятии решения. И комплекс таких параметров/векторов образует векторное пространство.

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

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

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

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

В нашем решении данные выборки были разделены в момент их нормализации.

Если данные линейно разделимы – все просто, но, как построить классификатор, в том числе и линейно неразделимый?

 

Для создания нелинейного разделителя используется следующая идея: повышается размерность исходного пространства и строится разделяющую гиперплоскость в новом, «расширенном» пространстве. Разделитель, построенный в «расширенном» пространстве, будет линейным. Однако при отображении его обратно в «обычное» пространство разделитель станет нелинейным, чего мы и добивались. В нашем случае расширение пространства было получено путем нормирования выборки.

Таким образом, мы свели нашу задачу к случаю решения задачи с линейной разделимостью.

 

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

 

Мною был приведен пример того, что нейронные сети можно создавать не только с помощью специализированных языков, типа Python, но и с помощью такого инструмента как 1С. В статье показано, что решить вопрос отсутствия функционала для умножения матриц, можно путем использования встроенного типа данных «Структура».  Для хранения нейронной сети использовался регистр сведений.

 

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

 

С чего начать

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

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

 

1. Аппроксимация функций.

 

2. Классификация данных.

 

3. Кластеризация данных.

 

4. Решение систем линейных алгебраических уравнений.

 

5. Решение систем дифференциальных уравнений в частных производных.

 

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

1) с неточными данными, недостаточно полными или недостаточно достоверными;

2) с изменяющимися по времени данными и в условиях постоянных непредвиденных помех;

3) когда решение принимается несколькими лицами с несогласованными или противоречивыми целями;

4) при работе по изменению антагонистической среды.

Перечислю некоторые из таких задач для нейросетей, в соответствии с указанными классами:  

1. Аппроксимация функций.

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

 

2. Классификация данных.

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

 

3. Кластеризация данных.

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

4. Решение систем линейных алгебраических уравнений.

Использование нейросетей для решения СЛАУ дает наилучший результат в задачах расчета себестоимости, при составлении балансовых моделей, задачах поиска экстремумов, в том числе условных экстремумов, взаиморасчетах между некоторым множеством юридических лиц, предприятий или отраслей и т.д.

 

5. Решение систем дифференциальных уравнений в частных производных.

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

 

Любую задачу, из перечисленных в списке выше, вы можете сразу вскормить вашей молодой, но перспективной нейросети на 1С, и оценить полученный результат.

 

 

О ближайших нейросетевых перспективах

Внедрение нейросетей способствует активной трансформации моделей деятельности в бизнесе и, по оценкам WEF за 2018 год,   способно в короткие сроки повысить производительность труда в компаниях более чем на 40%.  В ближайшем будущем именно эффективное использование технологий машинного обучения и искусственного интеллекта будет определять конкурентоспособность компаний.

Цифровая трансформация обусловлена ростом доли покупок в интернете, большинство потребителей уже привыкли совершать покупки в сети или, как минимум, выбирать наиболее подходящие условия с помощью сайтов компаний.

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

а) потребность клиента предсказывается на уровне ценностей;

б) большой акцент делается на своевременной доставке;

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

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

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

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

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

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

Перечислю новые категории бизнес-моделей, для которых нейросетевые технологии являются ключевыми:

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

2) Бизнес-модель  «как сервис»  — это бизнес-модели, основанные на использовании ресурсов взамен владения ими (среди них Software-as-a-Service (SaaS), Infrastructure-as-a-Service (IaaS) и  др.). Сегодня возникают все новые разновидности сервисных моделей, в  том числе Robots-as-a-Service, City-as-aService. Сервисные модели способствуют персонализации товаров и услуг, позволяя клиенту потреблять необходимый продукт в требуемых ему объемах для достижения желаемого результата;

3) Бизнес-модели, в основе ценообразования которых лежит достижение результатов и эффекта для клиента, в том числе на основании потребления комплексных продуктов и услуг. Такие бизнес-модели по аналогии с сервисными часто называют Product-as-a-Service (PaaS). К примеру, компания BASF помимо поставок удобрений предоставляет клиентам детальные рекомендации, какие именно удобрения использовать, в каком объеме и на каких растениях в данный период времени, исходя из мониторинга и анализа данных о почве, здоровье растений, погодных условиях и других параметрах;

4) Краудсорсинговые модели (краудсоурсинг, краудфандинг, краудлэндинг, “открытые инновации”, “экономика доверия”), базирующиеся на привлечении внешних ресурсов (денежных средств, людей, идей и  др.) для реализации бизнес-процессов R13; внедрения инноваций, разработки продуктов, производства, маркетинга и продаж и т.д.;

5) Бизнес-модели, основанные на монетизации персональных данных клиентов, когда бесплатные для пользователей сервисы продают их данные на других потребительских сегментах.

 

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

Еще один важный новый тип бизнес-моделей связан с трансформацией e-commerce в a-commerce, т.н. аutomated commerce, в  рамках которой продавец с помощью нейросетей строит алгоритмы, описывающие модель потребления клиента, и  затем автоматически доставляет ему товар на основании спрогнозированной потребности.

Технологии предиктивной аналитики также нацелены на автоматическое построение алгоритмов, описывающих потребление продуктов и услуг, и  интеллектуальное управление, с учетом данных прогнозов, процессами производства и доставки товаров к клиентам с участием партнеров. Пример - модель private labeling, когда контрактный производитель производит товар и отправляет его напрямую потребителю.

Приложения IoT (интернета вещей) в совокупности с нейросетями позволяют оценить параметры использования продукции, достигнутые эффекты и способствуют развитию модели серветизации. На принципе серветизации  построена популярная модель каршеринга, оплата автомобильной страховки в зависимости от преодоленных километров, в промышленности — оплата времени использования оборудования или произведенной на нем продукции. Компания Kaiser выставляет счет своим клиентам не за компрессорное оборудование, а за произведенный спрессованный воздух. В  рамках программы Rolls-Royce TotalCare компания поставляет клиентам авиадвигатели, но оплата производится за часы, в течение которых двигатель работает. В предоставляемый сервис входит и мониторинг работы из дата-центра Rolls-Royce и обслуживание двигателя.

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

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

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

Развитие  интеллектуальных платформ позволяет также расширить ценностное предложение для потребителя через партнерство с другими поставщиками. Например, китайский гигант Alipay создал единый сервис для путешественников, объединив в систему банки, гостиницы и платформу Uber 3.0.

В наше время, под влиянием новых достижений в сфере AI и ML, происходит глобальная дигитализация бизнеса – т.е. кардинально изменяется модель бизнеса крупных, средних, малых предприятий коммерческого и государственного секторов. Компании, которые сейчас не спешат с внедрением систем искусственного интеллекта, серьезно рискуют своим будущим. Такие компании могут не справиться с переменами, которые вызваны развитием технологий и их все возрастающим проникновением во все сферы жизни.

Консалтинговая компания Forrester Research рекомендуют генеральным директорам не отдавать важнейший процесс цифровой трансформации на откуп CIO (директорам по информационным технологиям), а заняться им самим вместе с директорами по маркетингу.

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

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

 

Вывод

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

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

 

Вместо стандартного кодинга, нейросеть, как программный продукт, развивается за счет обучения.  Отыскание решения задачи нейросетью  – это составление обучающих примеров. Таким образом, для задач решаемых с помощью нейровычислений, труд программиста в большей степени замещается новым трудом – учителя-исследователя. Как сказали в Wired : "Мы не будем программировать компьютеры, мы будем дрессировать их, как собак!"

 

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

 

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

 

Вы приняли решение о дигитализации вашего бизнеса и на вашем предприятии есть 1С ? Стройте нейросети в 1С! Начинайте с того, что есть. Дорога в digital-мир возникает под ногами идущего.

78

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. bonv 797 17.05.19 18:29 Сейчас в теме
Мною был приведен пример того, что нейронные сети можно создавать не только с помощью специализированных языков, типа Python, но и с помощью такого инструмента как 1С. В статье показано, что решить вопрос отсутствия функционала для умножения матриц, можно путем использования встроенного типа данных «Структура».

Язык Python это не специализированный язык для создания нейросетей. Это язык общего назначения.
Операции с матрицами в numpy выполняются на 3 порядка быстрее вашей реализации в 1С.

Не нужно писать нейросети на 1С для продакшен процессов. Нужно брать готовые библиотеки и их использовать.
VladC#; stilet; mitia.mackarevich; papami; andrey.panakhov; mivari; утюгчеловек; morin; TODD22; blackhole321; +10 1 Ответить
5. user995065 78 17.05.19 22:50 Сейчас в теме
(1) В момент редактирования документа в 1С, до его сохранения в базе данных, внешняя сеть на Python не увидит изменений в информации, которую вводит пользователь. Так что для многих задач в 1С ограничиться только внешней нейросетью будет сложнее.
7. bonv 797 17.05.19 23:06 Сейчас в теме
(5) Если исходить из
2-й вариант: используем из 1С данные, расположенные в таблицах SQL-сервера, а саму нейросеть и обработку данных выполняем на Python.

то да.
Но это не самый лучший вариант.
Лучше и практичнее: выносим обученную модель в микросервис и уже из 1С обращаемся к этому сервису.
18. user995065 78 18.05.19 15:53 Сейчас в теме
(7)То, о чем вы говорите - это идеальный вариант. Но для компании, в которой есть только 1С, "На чём писать сеть ?" - это вопрос №3, т.к. вопрос №2 - это "Готов ли ваш ИТ-директор сразу брать специалистов по Python или он вначале посмотрит несколько простых примеров для простых задач на 1С?". Не все еще уверовали в ML :) Вопрос же №1 - "Есть ли в компании кто-то, у кого всё в порядке с матано-функаном для корректной интерпретации результатов и построения моделей ?"

Библиотеки для нейросетей в меньшем приоритете, чем модели и данные, железо. Это не ООП. Сеть любой архитектуры со всеми видами оптимизации вы и сами напишите за вполне приемлемое время. А группа разработчиков - подавно.

О варианте "с микросервисом" будет следующая статья, с практическим примером. Будут только регистры и внешняя сеть.
20. bonv 797 19.05.19 09:15 Сейчас в теме
(18) у вас какое-то смещенное мнение. Все строится от нейросетей. Т.е. все остальные алгоритмы машинного обучения у вас уже априори в проигрыше. На данный момент не существует алгоритма, который работает одинаково хорошо во всех задачах.

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

И если речь идёт о найме, то нужно брать специалиста по машинному обучению, а не разработчика. Разработчики понадобятся уже после.

Вот вы говорите, что модели, данные и железо первично, а потом уже библиотеки. Но при этом предлагаете с нуля писать нейросети в 1С. Как я уже писал, numpy работает на 3 порядка быстрее реализации на 1С. Переводя на понятный язык: обучение нейросети, которое занимает 10 мин, например, в библиотеке tensorflow, у вас на 1С займёт от 7 часов до 7 дней. Чтобы получить что-то полезное на выходе, нужно прогнать десятки, сотни или даже тысячи моделей. На 1С же это займёт вечность.


И еще, почему вы в статье пишите ".. используя машинное обучение и искусственный интеллект.."?

Это тоже самое что писать "... используя колеса и автомобиль..."
VladC#; andrey.panakhov; +2 Ответить
23. user995065 78 19.05.19 16:53 Сейчас в теме
(20)Ну, чтобы в философию не уходить, давайте просто вы вывесите код сети в 1С и код на Python этой же сети для Tensorflow: опишем железо, параметры данных и замерим время вычислений, сравним результаты.

А то просто словами можно кидаться бесконечно. Простые нейросети в 1С легко реализуемы и быстро обучаются. Это факт. А против фактов не попрешь :) Поэтому нейросети могут быть взяты на вооружение любой компанией, где есть 1С. Пишите сети в 1С. Это легко и надежно. Ну, и конечно их архитектуры планируйте с учетом доступных ресурсов системы и нагрузки. От этой задачи никто не освобождал.
31. user995065 78 20.05.19 02:17 Сейчас в теме
(20)Вас пугает только вычисление матриц 1С-нейросетью ? Или еще что-то является критичным ? Матрицы выносим в ВК. Что еще там пересчитывается также часто ? Вынесите матрицы через NativeAPI и сравните с numpy - разрыв значительно сократится.
33. nomadon 362 20.05.19 08:46 Сейчас в теме
(31) повторю вопрос: "интересненько, а расскажите как n мерные массивы передавать в ВК что бы там умножать?"
41. user995065 78 20.05.19 21:22 Сейчас в теме
(33)Для хранения и передачи n-мерных матриц все элементы матрицы могут быть представлены в виде n+1-мерных векторов, которые будут содержать на 1-м месте значение соответствующего элемента матрицы, все остальные n-параметров (со 2-го по n+1-ый) - это его соответствующие n-индексов в матрице.
44. nomadon 362 20.05.19 21:27 Сейчас в теме
(41) крутяк, можно мне к вам на работу?
36. Darklight 17 20.05.19 11:05 Сейчас в теме
Помню, когда ещё был студентом - баловался нейросетями на страших курсах. Экспертную систему делал. И всё на 1С. Ну побаловался и забросил - не предназначена платформа для этого - хотя да, может, в силу своей некоторой, базовой универсальности, и лёгкой соединённости данных и алгоритмов. Но что, требуется от нейросети - скорости! А 1С Платформа её предоставить не сможет А так.... нейросеть можно и на СУБД построить, например на MS SQL Server через Transact SQL - и никакой посредник не нужен будет. Но скорости этого не особо прибавит. Тут нужен специальный движок, который сможет очень быстро и легко (для разработчика):
1. Совершать параллельные вычисления
2. Осуществлять гигантские выборки статистических данных
3. Совершать короткие но массовые апдейты весовых-ресурсов
4. Осуществлять быстрый массовый сетевой поиск (тут кстати, реляционные СУБД не шибко производительны)
5. Иметь удобны средства по настройке и тестированию нейросети
42. user995065 78 20.05.19 21:23 Сейчас в теме
(36) Чтобы не перегружать систему 1С и не блокировать работу пользователей, делается зеркальная копия базы (например, распределенная база данных и т.п.) с определенной периодичностью производим обмены.
Все вычисления, касательно обучения нейронной сети, переносим в копию базы, и далее готовую сеть переносим в рабочую базу.

Для ускорения формирования выборок, поиска в базе - индексируем использующиеся при поиске реквизиты, это увеличит размер базы данных, но значительно сократит время поиска.
51. Darklight 17 21.05.19 10:03 Сейчас в теме
(42)Всё это капля в море - а перенос в другую базу - никак не прибавит аппаратных мощностей!
55. user995065 78 21.05.19 21:57 Сейчас в теме
(51) Аппаратные мощности прибавит использование GPU, после того как мы вынесем основные вычисления в Python. Но только вычисления, а не сеть. Сеть остается в 1С. Я ниже, в ответе на комментарий, описываю всю связку "1С-нейросеть + Python". И проблема с производительностью уменьшается до допустимой.
52. Darklight 17 21.05.19 10:04 Сейчас в теме
(42)Всё это - капля в море. А перенос в другую базу - никак не прибавит аппаратных мощностей!
А вот интеграция с проектом MS Azure Machine Learning - вполне была бы интересна - коли у компании 1С (ну или, например, Яндекса) пока нет ещё своего аналогичного проекта.
56. user995065 78 21.05.19 21:59 Сейчас в теме
(52)Главное интеграцию организовать так, чтобы нейросеть могла обрабатывать не сохраненные в базе данных данные о работе пользователя. Это важно для многих задач. Т.е. в момент редактирования документа в 1С, до его сохранения в базе данных, нейросеть должна видеть изменения.
2. pm74 123 17.05.19 18:59 Сейчас в теме
(0) для каких задач в 1с требуется machine learning , только планирование ?
user995065; +1 Ответить
4. user995065 78 17.05.19 22:40 Сейчас в теме
(2) Спасибо за вопрос! В разделе "С чего начать" статьи перечисляются еще несколько задач, кроме планирования.
26. pm74 123 19.05.19 21:23 Сейчас в теме
(4) В реальности просто никто не придет и не скажет " сделай мне модель классификации того то по такому то набору признаков ", т.е. это либо в пределах самодеятельности и проф. любопытства ,либо какая то другая должность, не программист 1с (имо)
Ну а в техническом плане наверное действительно проще не изобретать велосипед на 1с а взять готовые библиотеки на питоне.
45. user995065 78 20.05.19 21:37 Сейчас в теме
(26)Ну, да. Это задачи для датасайнтиста. Кому интересен ML, тот и будет его продвигать и внедрять.

Проще сделать нейросеть на 1С, с разными костылями на ВК, чем приучить работать в Tensorflow всех начальников торговых и производственных подразделений, экономистов, главного бухгалтера и финансового директора компании, и еще нанять несколько Python-разработчиков.
48. pm74 123 21.05.19 07:07 Сейчас в теме
(45) вк или python - дело вкуса (хотя вы сами упомянули последний в заголовке) .
1с =>python можно сделать , например, через rpc
на скриншоте 2х2 на питоне через 1с (без ml )) )

несколько Python-разработчиков.
Насколько могу судить по примерам из интернета , там нет многостраничного сложного кода . Любой разберется. Даже я хоть и не настоящий сварщик питонист ))

приучить работать в Tensorflow всех начальников ...экономистов, главного бухгалтера и финансового директора
ну уж точно не надо)) Им нужен готовый продукт , красиво упакованый и перевязаный ленточкой. Полезные отчетики , кнопочки в 1с , экономистам можно картинки из Matplotlib
Прикрепленные файлы:
user995065; +1 Ответить
54. user995065 78 21.05.19 21:46 Сейчас в теме
(48) С rpc вариант стоит использовать. Сделаю, сравню с ВК. Спасибо!

Я ниже, в ответе на комментарий, описываю архитектуру связки "1С-нейросеть + Python", с выносом основных вычислений в Python.
57. pm74 123 21.05.19 22:08 Сейчас в теме
(54) да я потом прочитал коментарии ниже , но было поздно исправлять
текст запроса для xmlrpc
Скрытый текст
user995065; +1 Ответить
3. grumagargler 519 17.05.19 20:19 Сейчас в теме
Хорошая статья.
Подскажите пожалуйста, "digital-трансформация, digital-мир" это цифровая-трансформация / мир, или есть какой-то иной смысл непереводимости фраз на русский язык?
6. user995065 78 17.05.19 22:53 Сейчас в теме
(3) Главный смысл, как бы, в сочетании Python со средствами 1C - для применения нейросетей в компаниях, где есть 1С.
12. Steelvan 18.05.19 11:41 Сейчас в теме
(3) Смысл в том, что автор думает, что используя англицизмы она будет казаться умнее.

По мне так ровно наоборот, пихать англицизмы везде, даже не к месту, это полная пошлятина.
VladC#; cdrw3; check2; +3 1 Ответить
8. BlinOFF 2 18.05.19 05:13 Сейчас в теме
не насилуйте 1ску, ей итак не легко ))
используйте инструменты, предназначенные для этих хадач, а в 1с готовый результат подгружайте.
28. user995065 78 20.05.19 01:49 Сейчас в теме
(8)С точки зрения бизнеса, временные издержки по изменению ИТ-инфраструктуры воспринимаются компанией более болезненно, чем постоянные издержки, связанные с отставанием этой инфраструктуры от какого-то субъективного идеала, известного, к примеру, только вам. Это я про ошибочность распространенного в среде любителей компиляторов и ООП утверждения о том, что ML в 1С не может быть по определению.

Знаете продакшн-пословицу "Нафиг индукцию, давай продукцию"? Она на пальцах поясняет причину, почему все работают в 1С, а не, к примеру, в Dynamics AX. Работали, работают и будут работать. И все довольны :) Потому, что у 1С с MVP всё в порядке.

По этой же причине все будут строить сети в 1С, пока кто-то в это время рассказывает о смысле жизни и высоких возможностях в параллельных мирах. Каждому своё :) Зарабатывайте на внедрение нейросетей в 1С!

Всё, что большими коллективами людей из сферы AI и ML придумано и написано, к примеру, для Tensorflow, может быть отобрано под конкретную задачу и легко переписано под 1С. Нейросеть - это простой "алгоритм". Никаких аналогий, к примеру, с гигантскими веб-фреймворками там нет. На нейросетях кодеры в таком объеме не нужны. А недостающие несколько обработок для вычисления функций матана написать для 1С или вывести перемножение матриц в ВК на GPU - это, вы считаете, проблема ?
Evgeniy_Bayd; +1 2 Ответить
9. nomadon 362 18.05.19 09:32 Сейчас в теме
Nvidia gpu в 1с не будет никогда, продолжения не будет, огромный мозговой потенциал работает над созданием библиотек и алгоритмов, реализовывать все снова и на лад 1сников это конечно весело
Имхо, статья похожа на курсовую, возможно имел место «укус Белокаменцева»
RFP; VladC#; for_sale; cdrw3; salbey; papami; profiprog1c; Sybr; bonv; webester; ifal; Robbi; KroVladS; +13 2 Ответить
10. webester 29 18.05.19 09:58 Сейчас в теме
(9)Да когда первые несколько страниц - вступление, очень похоже, что так оно и есть. Мадам действительно разобралась с нейросетями и даже (ну ничего себе) научила 1с складывать два плюс два. Действительно очень важно и нужно особенно если учесть, что и алгоритмы и практическое применение нейросетей уже было на ИС.
17. user995065 78 18.05.19 15:51 Сейчас в теме
(10)Статья для управленцев, однако. Для выдающихся ученых в следующий раз напишу компактно: 2 страницы диффур и анализ DNC для Neural ODE :)
andrey.panakhov; +1 Ответить
11. KroVladS 24 18.05.19 10:10 Сейчас в теме
(9)
«укус Белокаменцева»

О новый термин ввели..
RFP; for_sale; torbeev; +3 Ответить
29. user995065 78 20.05.19 01:51 Сейчас в теме
(9) Насчет GPU: пишите банальную ВК и она вам умножение матриц из 1С посчитает на видеокарте. Какие проблемы ?
Что еще критичного для нагрузки, кроме матриц, вы считаете нужно из 1С-нейросети вынести на GPU ?

ВК для матриц на Python (с библиотекой для GPU) вас устроит ?
user774630; +1 2 Ответить
32. nomadon 362 20.05.19 06:11 Сейчас в теме
(29) интересненько, а расскажите как n мерные массивы передавать в ВК что бы там умножать?!
40. user995065 78 20.05.19 21:21 Сейчас в теме
(32) А что, вы не знаете, как работать с тензорами ? Выносите их данные в ВК и дальше делаете с ними всё, что захотите.
ВК для матриц и GPU со всеми библиотеками выложу со следующей статьей.
43. nomadon 362 20.05.19 21:25 Сейчас в теме
(40)понятно, спасибо
Жду в следующей статье упаковку массива в строку и обратный парсинг в numpy массив
С удовольствием проголосую за номинацию «теоретик-хайповед», спасибо за то, что дали понять утопичность дальнейшего взаимодействия
KapasMordorov; minimajack; +2 Ответить
47. user995065 78 20.05.19 23:09 Сейчас в теме
(43) Подобные фантазии со строкой слегка удручают :) Вам надо, как бы это сказать, наверное знания немного подтянуть.



Для того, чтобы нейросеть могла работать on-line и использоваться в текущей работе пользователя, т.е. корректировать действия пользователя до того, как данные будут записаны в базу данных 1С, необходимо хранить саму нейронную сеть в sql-таблицах 1С (например, в виде регистров).

В момент заполнения документов, система сама отслеживает прописанные события формы и обращается к существующей на этот момент нейронной сети в 1С.

Нейронная сеть в 1С (n-мерная матрица) хранится в виде регистра сведений в sql-таблице базы данных. Эта таблица/регистр содержит n+1 реквизит, каждый элемент n-мерной матрицы (n+1-мерный вектор) - это запись в sql-таблице. Первый реквизит содержит значение соответствующего элемента матрицы, остальные n-реквизитов - соответствующие n-индексов в матрице.


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


После того, как обучающий пример в 1С зафиксирован, 1С вызывает внешнюю компоненту, которая запускает расчеты на Python. Python обращается к sql-таблицам 1С, в которых хранятся записи обучающей выборки. Python, произведя расчеты для нейронной сети, записывает полученный результат в sql-таблицу баз данных, в которой хранится нейронная сеть. В дальнейшем при работе пользователей on-line, 1С обращается к нейронной сети, которая является результатом, полученным в результате работы Python.
53. user995065 78 21.05.19 21:31 Сейчас в теме
(47) Я думаю, из приведенного выше описания понятно: нейросеть находится в 1С, обучается в режиме online, а все "тяжелые" вычисления производятся в Python, в первую очередь матрицы, в т.ч. и на GPU. Вялые контраргументы еще остались у кого-то ?
65. user1219528 21.06.19 07:26 Сейчас в теме
13. acanta 56 18.05.19 12:02 Сейчас в теме
А прикольно почитать приличную современную курсовую научную работу.Так сказать с высоты нашего опыта осознать глубину своего невежества.
Тезис о том, что нельзя сделать систему управляемой, если она не наблюдаема весьма интересен.
Особенно в свете тенденций отделения разработчика информационной системы от данных системы и приучение его работе с функциональной моделью как воспитание привычки к идеальному состоянию бизнеса.
15. user995065 78 18.05.19 15:48 Сейчас в теме
(13)Позвольте полюбопытствовать, разработчик информационной системы - это кто ? Не кодер на плюсах, часом ? Нейросети больше любят математиков, как бы. Да, и 1С-разработчик больше сориентирован на предметную область, чем кодер на "языке общего назначения". Поэтому сети для 1С-ников - это true :) Они быстрее разберутся и будут применять.
19. acanta 56 18.05.19 16:07 Сейчас в теме
(15) встречный вопрос а 1с разработчик он кто?
Если факультет прикладной математики, а не переученный бухгалтер или монтажник с неоконченным средне специальным то ваша статья это только начало.
Но вообще 2 + 2 это проблема, тут думать надо, яблоки считать, кубики, баранов. Можно и пропустить что то и дважды посчитать.
А таблицу умножения достаточно вызубрить.
14. comol 3927 18.05.19 14:23 Сейчас в теме
Ох... Ну конечно не "нейросетей" а машинного обучения. Особенно для приведённых примеров задач... Логистическая регрессия и градиентный бустинг дали бы лучший результат. В 1С это можно делать посредством ВК или http сервисов. Даже если на python написали.... LLVM вам в помощь. А так очень много красивых букв конечно
16. user995065 78 18.05.19 15:50 Сейчас в теме
(14) "А так очень много красивых букв конечно" Это вы про LLVM ? :) Кстати, я при использовании методов ML всегда обобщаю их до нейросетей. Так что всё таки нейросети. И только нейросети :)
21. ildarovich 6446 19.05.19 13:23 Сейчас в теме
Интересная статья даже если не соглашаться с выводами. Очень много примеров больших и маленьких открытий в современной математике. Чтобы искать каждый факт по отдельности, может быть, подскажете, откуда это все в основном взято. Может быть книга (чья?) или лекции (чьи?) или что-то еще. То есть где про все это почитать подробнее? Имеется ввиду не азбука, а вот типа этого "методы нейроматематики позволяют заглянуть в восемь раз дальше по сравнению с классическими методами прогнозирования"
24. user995065 78 19.05.19 17:02 Сейчас в теме
(21) Это взято из моей презентации для компании, в которой я внедряла сеть на 1С :)


А про результаты "в восемь раз дальше" , т.е. о Reservoir computing данные исследований приведены подробно здесь:

https://aip.scitation.org/doi/abs/10.1063/1.5010300?journalCode=cha&

https://link.springer.com/article/10.1007%2Fs12559-017-9461-9

https://www.nature.com/articles/s41467-017-02337-y

http://www.bmp.ds.mpg.de/tl_files/bmp/preprints/Zimmermann_Parlitz_preprint.pdf


Возможно, через 2-3 месяца выложу сюда Reservoir computing, обобщенный до нейросети в 1С.
38. ildarovich 6446 20.05.19 16:30 Сейчас в теме
(24) Этот ответ меня не удовлетворил. Меня бы больше устроили ссылки: https://habr.com/ru/post/358352/ , https://22century.ru/popular-science-publications/machine-learnings-amazing-ability-to-predict-chaos которые пришлось искать самому. Аналогичным образом нашел и некоторые другие первоисточники. В общем, "с миру по нитке - опера Шнитке".

Конечно, круг задач, к которым в статье предлагается применить нейросетевой подход, впечатляет. Особенно, если сравнить с результатами вот этого опроса: https://forum.infostart.ru/forum9/topic174867/ .

Но если посмотреть вдумчиво, то по поводу некоторых задач есть серьезные сомнения. Вот, например,
4. Решение систем линейных алгебраических уравнений
Да, в 1992 году Судариков в. А. написал вот такую статью Исследование адаптивных нейросетевых алгоритмов решения задач линейной алгебры // Нейрокомпьютер, 1992. № 3,4. С. 13-20. С тех пор прошло много времени, но ни в одной из библиотек методов решения СЛАУ на основе этого похода так и не появилось. Возможно, дело в том, что
Нейронные сети могут все. Но точно также «все» могут машины Тьюринга, интерполяционные многочлены, схемы Поста, ряды Фурье, рекурсивные функции, дизъюнктивные нормальные формы, сети Петри. В предыдущей главе было показано, что с помощью нейронных сетей можно сколь угодно точно аппроксимировать любую непрерывную функцию и имитировать любой непрерывный автомат. Это и слишком много ‑ никому не нужен столь широкий класс функций, и слишком мало, так как далеко не все важные задачи ставятся как задачи аппроксимации.

Другое дело, что в конечном итоге решение практически любой задачи можно описать, как построение некоторой функции, перерабатывающей исходные данные в результат, но такое очень общее описание не дает никакой информации о способе построения этой функции. Мало иметь универсальные способности ‑ надо для каждого класса задач указать, как применять эти способности. Именно здесь, при рассмотрении методов настройки нейронных сетей для решения задач должны выявиться реальные рамки их применимости. Конечно, такие реальные рамки изменяются со временем из-за открытия новых методов и решений.
Это отсюда: http://www.gotai.net/documents/doc-art-003-05.aspx
Видите, как аккуратно сказано "такие реальные рамки изменяются", не расширяются, а изменяются, то есть могут и сократиться.

По поводу восьми времен Ляпунова нужно еще смотреть, похоже на фокус. А что, если в резервуаре была функция, лежащая в основе упомянутого уравнения или его части? Но тут пусть ученые между собой разбираются. Похоже, тут больше research, чем production.

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

Поэтическая игра воображения вовлекает в работу молодежь, поэзия рекламы создает научную моду и влияет на финансовые вложения. Можете ли Вы четко различить, где кончается бескорыстная творческая игра и начинается реклама? У меня такое однозначное различение не получается: это как вопрос о искренности – можно сомневаться даже в своей собственной искренности.

Итак: игра и мода как важные движущие силы.

В словах «модное научное направление» слышится нечто неоднозначное ‑ то ли пренебрежение, смешанное с завистью, то ли еще что-то. А вообще, мода в науке – это хорошо или плохо? Дадим три ответа на этот вопрос.

1. Мода – это хорошо! Когда в науке появляется новая мода, тысячи исследователей, грустивших над старыми темами, порядком надоевшими еще со времени писания диссертации, со свежим азартом бросаются в дело. Новая мода позволяет им освободиться от личной истории.

Мы все зависим от своего прошлого, от привычных дел и привычных мыслей. Так давайте же приветствовать все, что освобождает нас от этой зависимости! В новой модной области почти нет накопленных преимуществ – все равны. Это хорошо для молодежи.

2. Мода – это плохо! Она противоречит глубине и тщательности научного поиска. Часто "новые" результаты, полученные в погоне за модой, суть всего-навсего хорошо забытые старые, да еще нередко и перевранные. Погоня за модой растлевает, заставляет переписывать старые работы и в новой словесной упаковке выдавать их за свои. Мода ‑ источник сверххалтуры. Примеров тому – тысячи.

"Гений – это терпение мысли." Так давайте же вслед за Ньютоном и другими Великими культивировать в себе это терпение. Не будем поддаваться соблазну моды.

3. Мода в науке – это элемент реальности. Так повелось во второй половине XX века: наука стала массовой и в ней постоянно вспыхивают волны моды. Можно ли относиться к реальности с позиций должного: так, дескать, должно быть, а этак – нет? Наверное, можно, но это уж точно непродуктивно. Волны моды и рекламные кампании стали элементом организации массовой науки и с этим приходится считаться, нравится нам это или нет.

Нейронные сети нынче в моде и поэтическая реклама делает свое дело, привлекает внимание. Но стоит ли следовать за модой? Ресурсы ограничены – особенно у нас, особенно теперь. Все равно всего на всех не хватит. И возникают вопросы:

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

на новые игрушки, даже высокоинтеллектуальные, средств нет;
нейрокомпьютер должен доказать свои новые возможности – сделать то, чего не может сделать обычная ЭВМ, – иначе на него не стоит тратиться.
У энтузиастов есть свои рекламные способы отвечать на заданные вопросы, рисуя светлые послезавтрашние горизонты. Но все это в будущем. А сейчас? Ответы парадоксальны:

нейрокомпьютеры – это новая техническая революция, которая приходит к нам в виде интеллектуальной игрушки (вспомните – и персональные ЭВМ были придуманы для игры!);
для любой задачи, которую может решить нейрокомпьютер, можно построить более стандартную специализированную ЭВМ, которая решит ее не хуже, а чаще всего – даже лучше
Показать
46. user995065 78 20.05.19 21:40 Сейчас в теме
(38)Спасибо за дополнения и поддержку дискуссии! Планирую получить собственные экспериментальные результаты применения Reservoir computing на полноценной выборке в ближайшие месяцы. Результаты выложу здесь.

Насчет термина "нейробум"... Судя по количеству реально работающих приложений ИИ, сложно назвать это данью моде.
49. vvh74 21.05.19 09:00 Сейчас в теме
(38) Собственно, последний абзац у Горбаня своей ошибочностью перечеркивает все предыдущие размышления.
для любой задачи, которую может решить нейрокомпьютер, можно построить более стандартную специализированную ЭВМ, которая решит ее не хуже, а чаще всего – даже лучше
Вообще, для любой задачи можно построить специализированную машину, которая будет решать задачу лучше, чем универсальный компьютер (нейро или классический). В теории. На практике для огромного количества задач экономически необоснованно конструировать специализированные машины. А, к примеру, для шахмат, для распознавания голоса и изображений многолетние вложения в разработку алгоритмов уже практически влет разгромлены нейросетями. Да, это не философский камень. Но и давно уже не игрушки.
Так что учите ML или вас ждут перспективы разработчиков на фоксбейз.
user995065; +1 Ответить
22. acanta 56 19.05.19 14:52 Сейчас в теме
профессия библиотекарь на сегодняшний день уже может быть переквалифицироваться в хранителя музея.
25. Nefilimus 27 19.05.19 20:12 Сейчас в теме
Так себе информация я Вам скажу. Не очень яркие примеры использования нейросетей в 1С. Для того, чтобы ИИ правильно анализировал и принимал решения по работе в системе, необходима приличная база с данными, а также систематизация. Допустим, кладовщик должен отгружать товары сразу, после того как он попал в систему, но кладовщик у нас лентяй и делает с опозданием на час. А иногда вообще нужно действовать по обстоятельствам. Что тогда? ИИ будет выдавать такие же отвратительные результаты. Думаю для 1С ИИ не очень подходит.
27. lustin 19.05.19 23:37 Сейчас в теме
(0) Код конечно... Вообще не читабельный. Сонара на вас нет.

Что касается тематики - я использую https://github.com/BVLC/caffe через NativeAPI и не заморачиваюсь этим вашим питоном

А для любителей питона я уже год назад показывал - уже все готово https://blog.dataiku.com/deep-learning-with-dss
30. user995065 78 20.05.19 01:57 Сейчас в теме
(27) Органичнее и гармоничнее сеть для 1С реализовать в 1С. Через NativeAPI вынести наружу только "грузящие" вычисления. Матрицы, к примеру.
34. andrey.panakhov 20.05.19 09:22 Сейчас в теме
Спасибо!
Явно интересная статья, которая может пригодиться - в том числе, в той сфере, которой я занимаюсь.
Жаль, что моих знаний математики и тем более программирования недостаточно для того, чтобы сходу понять ее.
35. Evgeniy_Bayd 20.05.19 10:33 Сейчас в теме
Спасибо за статью!
user995065; +1 Ответить
37. taishy 51 20.05.19 12:36 Сейчас в теме
Обучение это хорошо. Научить бы ИИ придумывать что-то новое...
39. TODD22 17 20.05.19 16:51 Сейчас в теме
Интересней было бы почитать не то как реализовать, про это уже много чего написано, а то что с помощью этого уже реализовано и работает. И желательно в сравнении с другими способами.
Например планируем закупки и сравниваем несколько подходов: пальцем в небо, от результата прошлого периода + 10%, нейросетью и тд. Что бы понимать какие задачи и на сколько эффективно можно решать с помощью нейросетей.

Так же возникает вопрос а кто будет отвечать за неверный прогноз?
50. vvh74 21.05.19 09:08 Сейчас в теме
(39) "кто будет отвечать за неверный прогноз" - вообще никак не относится к применяемым алгоритмам.
А про планирование я вам скажу. Если нет жесткого линейного алгоритма расчета, то нейросети - единственный вариант, который дает хоть какую-то надежду на результат, все остальное мало отличается от "пальцем в небо". Это по личным наблюдениям за полугодовым процессом попыток подобрать метод планирования продаж, причем в достаточно тепличных условиях.
user995065; +1 Ответить
58. KapasMordorov 429 23.05.19 11:37 Сейчас в теме
Крикливые заголовки, а также цитирование себя в соседстве с Кантом и Винером (причем себя впереди них), утонули в бессодержательном бла-бла-бла.
Это курсовая экономиста или маркетолога?
user1219528; for_sale; +2 Ответить
59. TODD22 17 23.05.19 11:41 Сейчас в теме
(58)
а также цитирование себя в соседстве с Кантом и Винером (причем себя впереди них)

"Так сказал я и сегодня, ну ещё Кант, но давно".
user1219528; VladC#; +2 Ответить
61. for_sale 714 24.05.19 22:08 Сейчас в теме
(58)
Да, уж от скромности автор точно не простудится))
60. dmagin 23.05.19 12:32 Сейчас в теме
Мне нравится напор автора.
Надо продолжать копать с такой же энергией в этом направлении.
Воды можно поменьше, а конкретики побольше.
user1219528; rintik; pm74; user995065; +4 Ответить
62. acanta 56 24.05.19 22:16 Сейчас в теме
Каждый ИТ директор должен защитить свою кандидатскую диссертацию!
63. nyam-nyam 27.05.19 13:45 Сейчас в теме
(62)И начать это делать на Инфостарте с виде статей и лирических отступлений от оных. И главное отвечать в комментах. :)
64. acanta 56 27.05.19 13:49 Сейчас в теме
(63) или с преподавания информатики в младших классах с репетиторством.
Оставьте свое сообщение