Рубрика «белый ящик»

Ученые все чаще не могут объяснить, как работает ИИ. Теория «черного» и «белого» ящика - 1

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

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

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

Разработка программ высокого качества подразумевает, что программа и её части подвергаются тестированию. Классическое модульное (unit) тестирование подразумевает разбиение большой программы на маленькие блоки, удобные для тестов. Либо, если разработка тестов происходит параллельно с разработкой кода или тесты разрабатываются до программы (TDD — test driven development), то программа изначально разрабатыватся небольшими блоками, подходящими под требования тестов.

Одной из разновидностей модульного тестирования можно считать propery-based testing (такой подход реализован, например, в библиотеках QuickCheck, ScalaCheck). Этот подход основан на нахождении универсальных свойств, которые должны быть справедливы для любых входных данных. Например, сериализация с последующей десериализацией должна давать такой же объект. Или, повторная сортировка не должна менять порядок элементов в списке. Для проверки таких универсальных свойств в вышеупомянутых библиотеках поддерживается механизм генерации случайных входных данных. Особенно хорошо такой подход работает для программ, основанных на математических законах, которые служат универсальными свойствами, справедливыми для широкого класса программ. Есть даже библиотека готовых математических свойств — discipline — позволяющая проверить выполнение этих свойств в новых программах (хороший пример повторного использования тестов).

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

Под катом описаны несколько подходов к тестированию сложных программ с одним входом с разной степенью сложности (вовлеченности) и разной степенью покрытия.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js