Это третья часть серии из трех статей о конкурентных нейронных сетях. Вы можете найти Часть 1, введение в конкурентные нейронные сети, здесь и Часть 2, о самоорганизующихся картах функций, здесь. В этой заключительной части мы рассмотрим Growing Neural Gas, алгоритм с огромным потенциалом для векторного квантования, а также кластеризации.

Когда немецкий вычислительный нейробиолог Бернд Фрицке в своей основополагающей статье 1995 года придумал алгоритм, получивший название Growing Neural Gas (GNG), машинное обучение в целом было относительно новой областью, очень сильно вдохновленной актуальной нейробиологией, которая время - во многом благодаря новым методам нейровизуализации, включая функциональную нейровизуализацию (фМРТ), магнитоэнцефалографию (МЭГ) и диффузионную тензорную визуализацию (DTI) - переживает эпоху прорывов. Это вдохновило компьютерных ученых на создание моделей, аналогичных работе нейронов. Например, глубокое обучение (особенно глубокие сверточные нейронные сети) в лучшем случае может быть вдохновлено тем, как мозг обрабатывает информацию, в частности визуальную информацию для своего компонента что (называемого вентральным визуальным потоком), в отличие от того, как мозг обрабатывает информацию. 'компонент (обслуживаемый спинным зрительным потоком), но черпал первоначальное вдохновение из этих факторов. Первоначальная аналогия действовала достаточно далеко, чтобы создать модель с работоспособными математическими аналогиями, которые затем можно было бы расширить с помощью вещей, отсутствующих в реальной зрительной системе, таких как сверточные ядра. Neural Gas также черпает смутное вдохновение из нейронного процесса, называемого хеббийским обучением. Эта теория, восходящая к концу 1940-х годов, стремилась объяснить феномен ассоциативного обучения тем фактом, что если два нейрона, достаточно близко расположенные друг к другу, имеют тенденцию срабатывать вместе, они в конечном итоге с большей вероятностью станут синаптически связанными , чем если бы это было не так. Конечно, это тщательное упрощение (если вас интересует, насколько это действительно так, эта статья Рамси и Эбботта в Physiology - хорошее введение), но она вдохновила идея внутри искусственных нейронных сетей о том, что связи между нейронами должны быть тем сильнее, чем чаще они активируются одновременно (нейроны, которые срабатывают вместе, соединяются вместе).

Алгоритм растущего нейронного газа

Growing Neural Gas - это относительно простой алгоритм, который, как и другая конкурентная модель, с которой мы столкнулись в предыдущей главе, позволяет изучать и представлять топологию. Таким образом, это форма представляющей топологию сети, и, как мы видели в Части 1, она способна аппроксимировать нечто столь же сложное, как топология человеческого лица, - создавать что-то вполне узнаваема для человека-наблюдателя при значительном сокращении информации. Например, анимация слева демонстрирует, что такую ​​сложную вещь, как человеческое лицо, можно аппроксимировать со значительной эффективностью, чтобы создать изображение, безошибочно узнаваемое наблюдателем.

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

  1. Каждая итерация начинается с выбора точки данных из обучающего набора. Поскольку GNG очень хорошо обобщаются на произвольное количество измерений, принято говорить о них в терминах векторов v длины.
  2. Ближайший к v нейрон, который по аналогии с SOFM называется наиболее эффективной единицей (BPU), перемещается ближе к v. Все нейроны, напрямую связанные с BPU, также перемещаются ближе к v.
  3. Определите второй по эффективности блок (SBPU). Если BPU и SBPU подключены, установите нулевой возраст этого подключения. Если они не подключены, подключите их. Затем увеличьте возраст всех остальных ребер, исходящих от BPU.
  4. Если возраст ребра превышает максимальный возраст Amax, удалите ребро. Если это приводит к «сиротским нейронам» (нейронам без соединяющих их ребер), они также удаляются.
  5. Каждые λ итераций нейрон с наибольшей кумулятивной ошибкой (сумма расстояний от каждого вектора данных v за каждую итерацию) определяется как наименее эффективная единица (WPU). Вставьте новый нейрон на полпути между WPU и его худшим соседом и удалите исходное ребро между WPU и его худшим соседом.
  6. Итерируйте до тех пор, пока не будет достигнуто какое-либо граничное условие, например максимальное количество итераций.

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

Использование GNG для подсчета кластеров

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

Набор данных DIARETDB1 исследовательской группы Kauppi et al. в Технологическом университете Лаппеенранты содержит 89 цифровых изображений глазного дна, то есть изображений глазного дна пяти здоровых добровольцев и 84 человек с той или иной степенью диабетической ретинопатии. При диабетической ретинопатии, осложнении диабета, которое поражает мелкие кровеносные сосуды сетчатки, длительный неадекватный контроль уровня глюкозы в крови приводит к повреждению сосудов, микроаневризмам и экссудату, когда липиды (вызывающие ярко-желтый твердый экссудат) или кровь (приводящие к бледному, диффузному желтый мягкий экссудат) скопились на глазном дне. Далее мы будем использовать GNG для количественной оценки этих отклонений. Набор данных DIARETDB1 содержит маски ROI (области интереса), но они просто очерчивают области, которые показывают конкретную клиническую особенность. Можем ли мы использовать Growing Neural Gas, чтобы подсчитать, сколько скоплений твердых экссудатов присутствует в интересующих нас областях? Вы делаете ставку!

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

Затем мы используем тот факт, что липидные экссудаты имеют очень узнаваемый желтый цвет, устанавливая пороговые значения с помощью функции inRange OpenCV. На этом этапе нам пригодится выполненная нами выше маскировка области интереса, поскольку диск зрительного нерва (ярко-желтая круглая структура, куда входят кровеносные сосуды и аксоны ганглиозных нейронов покидают сетчатку, чтобы присоединиться к зрительному нерву), в зависимости от освещения, часто бывает похожий цвет. При использовании inRange изображение обычно преобразуется в формат HSV (оттенок, насыщенность и значение), поскольку это позволяет упростить определение цветов в определенном диапазоне оттенков. В HSV оттенок (`` цвет '') занимает отдельный элемент цветового вектора (обычно указывается в градусах на цветовом круге), поэтому указать все желтые так же просто, как указать приблизительный угол оттенка желтого (около 60 ° ) и за исключением краев с низкой насыщенностью (бледные, с тенденцией к белому) или с низким уровнем насыщенности (темные, с тенденцией к черному). Это было бы намного сложнее с большинством цветов в RGB! К счастью, OpenCV и его привязки Python имеют отличные возможности преобразования цветового пространства.

При использовании GNG для подсчета кластеров несколько параметров имеют первостепенное значение. В частности, стоит начать с очень большого количества исходных нейронов. В примере квантования вектора изображения, упомянутом в части 1, мы начали с двух нейронов. Результатом этого является график, который большую часть времени будет оставаться полностью связанным (напомним, что для GNG намного проще создать новый нейрон, чем отбросить существующий). Это проблема, поскольку мы полагаемся на подсчет разрозненных подграфов, чтобы определить количество различных поражений. Самое простое решение - создать большое количество исходных нейронов (несколько тысяч, т.е. на 2–3 порядка больше ожидаемого количества отдельных кластеров). Увеличивая время обучения, это действительно приводит к более точной сегментации через некоторое время - и, что наиболее важно, в отличие от сегментов с меньшим количеством начальных нейронов, они с гораздо меньшей вероятностью будут иметь связанные сегменты, которые потребуют нескольких итераций для разделения. .

Заключение

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

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

Сноска: определение порога маски и консенсус экспертов

Когда эксперты комментируют изображения, обычно для форм аннотаций используется непрозрачность 1 / n, где n - количество комментирующих экспертов. Таким образом, каждый из четырех экспертов аннотировал сигнал с интенсивностью 25%. Для удобства это означает, что мы можем использовать пороговое значение для такого изображения для определения согласованных уровней. Обычно это изображения в оттенках серого. Следовательно, скажем, для четырех аннотаторов любой пиксель с интенсивностью выше 50% должен иметь «голос» как минимум двух аннотаторов. Таким образом, пороговая обработка, исключающая пиксели с интенсивностью менее 50%, создаст маску, требующую согласия по крайней мере половины аннотаторов. Широко используется для аннотирования изображений в научных исследованиях с использованием областей интереса (ROI), это позволяет нам ограничить наше рассмотрение правдоподобными участками и игнорировать шум от других структур.