Сделал одно забавное заключение в последнее время.
Deep Learning размывает понятие “Интеллектуальная собственность”. Раньше данное понятие было очевидно. Каждый новый алгоритм был особенным. Всегда можно было проследить авторство и источник. А сейчас? Зачастую достаточно переписать лишь функцию потерь поверху ResNet, или сделать другую выборку гипотез.
И алгоритм уже будет принципиально другим.
Всего 100 строчек код поверх открытых исходников, зачастую это уже и есть рабочий прототип.
Как же быть при работе с заказчиком, как заключать договора? Мы в последнее время пришли к следующей схеме:
- Интеллектуальной собственностью заказчика, которую мы явно прописываем в договор является:
- Те базы, которые он передаёт на начало работ
- Те исходники, которые он нам передаёт на начало работ (такое стараемся вообще не брать, чтобы вопросов не возникало)
- Исходники, получающиеся на выходе из работ, которые были нами написаны. Те самые 100 строчек.
- Уникальные разработки, которые были созданы в ходе работы. Такие работы встречаются очень редко, но они бывают. Если есть понимание, что в ходе работы может родиться что-то принципиально новое – нужно очень подробно проговаривать с заказчиком этот момент. При этом новым может являться даже какая-то тривиальная на первый взгляд идея.
Таких задач от силы 10% от общего числа, так что данный пункт я не буду особо освещать дальше.
- Его собственностью не являются (сейчас мы тоже требуем это записать в договор):
- Алгоритмы которые решают задачу. Сейчас алгоритмы могут быть одинаковые в задачах абсолютно далёких и независимых. Чтобы избежать любых дальнейших претензий, в том числе к будущим заказчикам – этот пункт необходим.
- Архитектуры сетей которые используются, архитектуры слоёв потерь. По сути – из-за тех же проблем.
Кто-то начинает возмущаться: “То есть сегодня вы сделаете эту задачу мне, а завтра конкуренту?! Почему??”.
Есть несколько ответов и решений:
- Стоимость решения задачи – это 3-6 месяцев зарплаты программистов в Москве (например). Ну год. Почему за эти деньги мы должны отрезать для себя кусок рынка в котором разбираемся? Особенно если на момент общения мы уже имеем большой опыт в тематике.
Если вы заказываете себе сайт на тему шушпанчиков и снусмумриков, то почему вы ожидаете от создателей сайта что они никогда больше не будут этим заниматься? Особенно если уже делали похожие сайты.
(опять же, без учёта работ где генерится интеллектуальная новизна) - Если вы хотите чтобы мы никогда не занимались данной тематикой – давайте обсуждать это отдельно. Возможно всё, но какая нам прибыль с этого? Есть список стандартных вариантов:
- Мы никогда не берёмся за разработку аналогичных проектов если сумма контракта значительно превышает нашу ожидаемую с них прибыль. Например когда мы продали наше решение по радужной оболочке – мы так и сделали. Сумма значительно больше чем можно заработать на разработке аналогичных систем.
- Какая-то долговременная выгода для нас: длительный договор на поддержку, процент с прибыли которое приносит решение, и.т.д.
- Некоторая дополнительная сумма к договору, которая ограничивает нас N месяцев от работы в аналогичных проектах.
- Бывают и другие варианты. Например мы делили работу для одного монополиста, помогая довести до ума ихнюю технологию которой просто ни у кого нет. Естественно тут мы сами предложили явно описать в договоре что в эту технологию мы никогда не лезем кроме как в работах с монополистом.
Да и вообще уникальные задачи способствуют тому, что можно давать обещание не заниматься темой без рисков остаться без проектов в будущем.
- Ещё одной ограничительной мерой может являться подписание NDA на упоминание того, что мы данной темой занимались. При этом без запрещения использовать используемые в работе алгоритмы. Иногда мы готовы такое подписывать.
В любом случае стоит отметить Заказчику, что его задел – это его база и качество её сбора. В реальности именно этот момент даёт 90% качества итогового решения.
А вот то что происходит дальше – на сегодняшний день уже повторяемый процесс. И в нём зачастую нет ничего сложного.
Конечно, есть задачи где по ходу может родится что-то уникальное, когда сам подход к решению – это новизна
Любопытно, а как вы регулируете с заказчиками вопросы прав на результаты?
А сами гиперпараметры алгоритмов в итоге чьей ИС остаются ?
Я думаю, что это зависит от задачи/постановки и конкретного случая. Если есть задача тонкого тюнинга гиперпараметров – это одно. Нет – другое.
В большенстве случаев же будут стоять самые обычные параметры обучения. При этом там +-пол киллометра – результат не изменится. Это же не Kaggle, где нужно бороться за каждую десятую процента. В реальных задачах обычно такие точности проще из другихз мест утащить.
Но если же всё же задача именно уровня Kaggle где нужны последные 0.1% точности, то да, тут уже задача тонкого тьюнинга, тут это ИС заказчика должно быть.