Я только что закончил реализацию прототипа управляемого алгоритма обучения, автоматически присваивая категориальные теги всем элементам нашей базы данных нашей компании (примерно 5 миллионов элементов).Agile: Истории пользователей для машинного обучения?
Результаты выглядят хорошо, и мне дано добро на планирование проекта по реализации продукции.
Я уже делал такую работу, поэтому я знаю, как работают функциональные компоненты программного обеспечения. Мне нужна коллекция веб-сканеров для извлечения данных. Мне нужно извлечь функции из обходных документов. Эти документы должны быть разделены на «набор учебных материалов» и «набор классификации», а функциональные векторы должны быть извлечены из каждого документа. Эти векторы признаков самоорганизуются в кластеры, а кластеры проходят через ряд операций по балансировке. Etc и т. Д. И т. Д. И т. Д.
Итак, я составил план, содержащий около 30 уникальных задач разработки/развертывания, каждый из которых имеет временные оценки. Первый этап разработки - игнорирование некоторых продвинутых функций, которые мы хотели бы иметь в долгосрочной перспективе, но не достаточно высокоприоритетных, чтобы сделать это в графике разработки еще - запланировано на двухмесячную работу , (Имейте в виду, что у меня уже есть рабочий прототип, поэтому окончательная реализация значительно проще, чем если бы проект начинался с нуля.)
Мой менеджер сказал, что план выглядит хорошо, но он спросил, могу ли я реорганизовать задачи в истории пользователей, по нескольким причинам: (1) наше программное обеспечение для управления проектами полностью организовано вокруг пользовательских историй; (2) все наше планирование основано на подгонке целых рассказов пользователей в спринты, а не в индивидуальном планировании задач; (3) другие команды, как и веб-разработчики, отлично использовали гибкие методологии, и им удалось моделировать все функции программного обеспечения в качестве пользовательских историй.
Так что я создал историю пользователя на верхнем уровне проекта:
Как пользователь системы, я хочу, чтобы искать предметы по категориям, так что я могу легко найти наиболее подходящие элементы в огромной, сложной базе данных.
Или, может быть, лучше история верхнего уровня для этой функции будет:
Как редактор контента, я хочу, чтобы автоматически создавать категоричные обозначения для элементов в нашей базе данных, так что клиенты могут легко найти высокоценные данные в нашей огромной, сложной базе данных.
Но это не настоящая проблема.
Трудная часть для меня - это выяснить, как создать подчиненные истории пользователей для остальной архитектуры машинного обучения.
Дело в точке ... Я знаю, что алгоритм требует двух основных архитектурных подразделений: (A) обучения и (B) классификации. И я знаю, что учебная часть архитектуры требует построения кластерного пространства.
Вся литература Agile Development, которую я прочитал, кажется, указывает, что пользовательская история должна быть «наименьшей возможной реализацией, которая обеспечивает любую ценность для бизнеса». И это имеет большое значение при разработке части программного обеспечения конечного пользователя. Начните с малого, а затем постепенно добавляйте значение, когда пользователи требуют дополнительных функций.
Но кластерное пространство само по себе обеспечивает нулевое значение для бизнеса.Также не работает сканер или экстрактор. Нет коммерческой ценности (не для конечного пользователя или для любой из ролей, внутренних для компании) в частичной системе . Обученное кластерное пространство возможно только с помощью искателя и экстрактора объектов, и только релевантно, если мы также разработаем сопроводительный классификатор.
Я полагаю, можно было бы создать пользовательские истории, где подчиненные компоненты системы действуют как пользователи в рассказах:
Как контролируется обучение кластерного пространства строительства рутина, я хочу, чтобы потреблять данные из экстрактора признаков, чтобы я мог существовать.
Но это кажется действительно странным. Какая польза от этого дает мне разработчик (или наши пользователи или любые другие заинтересованные стороны, если на то пошло), чтобы моделировать мои истории пользователей?
Хотя основную историю можно легко разделить по границам архитектурных компонентов (искатель, тренер, классификатор и т. Д.), Я не могу придумать какую-либо полезную декомпозицию с точки зрения пользователя.
Что вы, ребята, думаете? Как вы планируете рассказы пользователей Agile для сложных, неделимых компонентов, не относящихся к пользователю?
Что касается «очевидных тестов», то на верхнем уровне классификатора есть определенные очевидные тесты, и я уже могу измерить различные типы совокупной точности. Но как только я разбиваю дизайн на компоненты, тесты становятся намного менее очевидными. Очень сложно проверить «извлечение функции» в отрыве от «классификации», потому что результаты классификатора определяют критерии успеха для извлеченных функций. Никакая часть системы не производит достоверно правильных или неправильных результатов, пока эти компоненты не будут собраны в полную систему! – benjismith