Бт график с овуляцией


график овуляции – как измерять БТ и какая должна быть БТ, если произошло оплодотворение при нормальной овуляции, как определить овуляцию по базальной температуре

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

Определение

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

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

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

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

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

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

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

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

Зачем нужно определение БТ?

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

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

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

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

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

Как измерять?

Разобравшись с важностью такого показателя, как базальная температура, стоит пояснить, что только ее правильное измерение гарантирует точные результаты. Есть несколько важных правил, которые позволят измерить БТ точно.

  • Проводите измерение в какой-то одной части тела, не меняйте место расположения градусника. Если вы решили измерять температуру во влагалище, все измерения проводите только так, если измеряете температуру в прямой кишке, не переносите термометр во влагалище. Если хочется измерять температуру в полости рта, учтите, что для этого нужен специальный термометр.
  • Производите замеры каждый день в одно и то же время (допустимый интервал погрешности – полчаса), сразу после пробуждения, не вставая с кровати, не ворочаясь, поскольку активность может повысить уровень БТ без привязки к женским репродуктивным процессам. С вечера позаботьтесь о том, чтобы градусник лежал рядом с кроватью, чтобы до него, не вставая, можно было легко дотянуться рукой. С вечера же встряхните термометр, чтобы он полностью был готов к новому использованию.
  • Погружайте термометр на 2-3 сантиметра, не глубже. Во время измерения лежите спокойно, не нервничайте, не разговаривайте, не ворочайтесь. Общее время термометрии – от 5 минут.
  • Градусник должен быть качественным. Лучше всего выбирать ртутный градусник, он точнее.
  • В первый раз мерить температуру нужно в первый день очередной менструации и потом – ежедневно, не делая перерывов на месячные.
  • Лучшее время для измерения – 5-7 часов утра. Если вы привыкли спать до обеда, проснитесь в это время, сделайте замеры и снова ложитесь спать.

Важно! Чтобы результаты измерений были точными, а график правильным, следите за количеством сна перед измерением. Для адекватного результата важно спать не менее 6 часов перед измерением непрерывно, не вставая в туалет.

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

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

Как составить правильно?

Для составления графика вовсе не обязательно заводить какие-то специальные бланки, можно воспользоваться самым обычным тетрадным листом в клетку. На нем нужно провести две линии, как это делали в школе на уроках математики – ось абсцисс (горизонтальную) и ось ординат (вертикальную). На горизонтальной линии вы будете отмечать дни менструального цикла (можно по датам, можно по ДМЦ – день менструального цикла, а можно и так и так одновременно). На вертикальной линии сделайте разметку, как на градуснике – от 36,0 градусов до 38,5 градусов, не забывая о десятых долях (36,1, 36,2, 36,3, 36,4, 36,5, 36,6, 36,7 и далее до 38,5).

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

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

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

Анализируем результаты

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

  • Кривая первого типа – во второй фазе менструального цикла температура повысилась не более, чем на 0,4 градуса. Перед овуляцией было снижение температуры, аналогичное снижение отмечалось перед менструацией. Период повышенной температуры длился от 12 до 14 суток. Это нормальный график, говорящий о том, что овуляция была, она протекала нормально, нарушений гормонального фона нет, женщина вполне может стать мамой.
  • Кривая второго типа – во второй половине менструального цикла имелось повышение температуры, но оно было менее выраженным (не превышало 0,2-0,3 градусов). У такой женщины есть определенная гормональная недостаточность, связанная с дефицитом эстрогенов и прогестерона.
  • Кривая третьего типа – вторая половина цикла длится менее 10 дней, после чего наступает менструация. Температура поднимается лишь незадолго перед месячными и нет характерного для здоровых женщин ее спада перед началом менструального кровотечения. Такой график – повод для визита к врачу и выяснения причин, по которым вторая фаза считается недостаточной.
  • Кривая четвертого типа отличается монотонностью (существенных изменений на протяжении всего женского цикла не происходит вообще). Такой график говорит о том, что овуляции не было, цикл был ановуляторным.
  • Кривая пятого типа – хаотичный график с большими размахами, повышениями и падениями БТ. График трудно отнести к типам 1,2,3 и 4, он непохож ни на один из них. Вариантов несколько – либо женщина неверно измеряла температуру, либо у нее тяжелый гормональный дисбаланс, либо на нее влияли дополнительные факторы. Нужно сделать другие измерения и посетить врача.

Некоторые ситуации следует разобрать более детально с пояснениями.

Норма при полноценном цикле

Первые три дня менструального цикла у женщины держится температура около 37,0 градусов. Это нормально, ведь идет процесс отторжения эндометрия, на 5-6 день цикла, когда месячные заканчиваются, температура опускается до 36,4-36,7 градуса.

Чем длиннее цикл, тем длительнее период низкой температуры первой фазы. При 28-дневном цикле фаза может длиться неделю, а при цикле в 32 дня – 1,5 полторы недели. Все это время БТ находится на уровне 36,4-36,6 (редко до 36,8 градуса). При этом не стоит беспокоиться из-за того, что она каждый день разная: незначительные колебания – это норма.

За 2 дня до овуляции происходит снижение температуры на 0,1-0,2 градуса, за день до овуляции снижение составляет до 0,6 градуса, а потому начинается резкий подъем БТ. В момент выхода яйцеклетки температура может составлять от 36,7 до 37,0 градуса.

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

Если беременности нет, БТ снижается постепенно.

Что означает высокая температура в первой фазе?

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

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

Обязательно нужно посетить врача и начать получать гормональное лечение.

После овуляции температура не растет

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

Овуляции нет

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

Двойная овуляция

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

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

Могут ли графики ошибаться?

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

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

Важно! Если вы принимаете оральные гормональные контрацептивы, измерять БТ не нужно, поскольку результаты достоверными не будут – препараты подавляют овуляцию, ее не происходит, поэтому все графики будут ановуляторными.

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

О базальной температуре при овуляции смотрите следующее видео.

Как проводить глубокое изучение графиков с помощью сверточных сетей графов | Тобиас Сковгаард Джепсен

Формально сверточная сеть с графами (GCN) - это нейронная сеть, которая работает с графами. Учитывая граф G = (V, E) , GCN принимает в качестве входных данных

  • матрицу входных признаков N × F⁰ матрицу признаков, X, , где N - количество узлов, а F⁰ - это количество входных характеристик для каждого узла, а
  • - это матричное представление N × N структуры графа, такое как матрица смежности A G.[1]

Скрытый слой в GCN, таким образом, можно записать как Hⁱ = f ( H ⁱ⁻¹, A )) где H ⁰ = X и f - это распространение [1]. Каждый слой Hⁱ соответствует матрице признаков N × F , где каждая строка является представлением признаков узла.На каждом слое эти объекты объединяются, чтобы сформировать объекты следующего слоя с использованием правила распространения f . Таким образом, на каждом последующем уровне объекты становятся все более абстрактными. В этой структуре варианты GCN различаются только выбором правила распространения f [1].

Одно из простейших возможных правил распространения: [1]:

f ( Hⁱ , A ) = σ ( AHⁱWⁱ )

где Wⁱ - весовая матрица для слоя i , а σ - нелинейная функция активации, такая как функция ReLU.Весовая матрица имеет размеры F × Fⁱ ¹ ; другими словами, размер второго измерения весовой матрицы определяет количество функций на следующем уровне. Если вы знакомы со сверточными нейронными сетями, эта операция похожа на операцию фильтрации, поскольку эти веса разделяются между узлами в графе.

Упрощения

Давайте рассмотрим правило распространения на самом простом уровне.Пусть

  • i = 1 , s.t. f является функцией входной матрицы признаков,
  • σ является функцией идентичности, а
  • выбирает веса s.t. AH W ⁰ = AXW ⁰ = AX .

Другими словами, f ( X , A ) = AX .Это правило распространения, возможно, слишком простое, но мы добавим недостающие части позже. Кстати, AX теперь эквивалентен входному слою многослойного персептрона.

Пример простого графика

В качестве простого примера мы будем использовать следующий график:

Простой ориентированный граф.

И ниже его представление матрицы смежности numpy .

 A = np.matrix ([
[0, 1, 0, 0],
[0, 0, 1, 1],
[0, 1, 0, 0],
[1, 0, 1, 0]],
dtype = float
)

Далее нам нужны функции! Мы генерируем 2 целочисленных функции для каждого узла на основе его индекса.Это упрощает позднее подтверждение вычислений матрицы вручную.

 In [3]: X = np.matrix ([
[i, -i]
для i в диапазоне (A.shape [0])
], dtype = float)
XOut [3] : matrix ([
[0., 0.],
[1., -1.],
[2., -2.],
[3., -3.]
])

Применение распространения Правило

Хорошо! Теперь у нас есть граф, его матрица смежности A и набор входных функций X . Давайте посмотрим, что произойдет, если мы применим правило распространения:

 In [6]: A * X 
Out [6]: matrix ([
[1., -1.],
[5., -5.],
[1., -1.],
[2., -2.]]

Что случилось? Представление каждого узла (каждой строки) теперь является суммой характеристик его соседей! Другими словами, сверточный слой графа представляет каждый узел как совокупность его окрестности. Предлагаю вам проверить расчет на себе. Обратите внимание, что в этом случае узел n является соседом узла v , если существует ребро от v до n .

Возможно, вы уже заметили проблемы:

  • Агрегированное представление узла не включает его собственные функции! Представление - это совокупность функций соседних узлов, поэтому только узлы, у которых есть цикл, будут включать свои собственные функции в совокупность.[1]
  • Узлы с большими степенями будут иметь большие значения в их представлении функций, тогда как узлы с малыми степенями будут иметь маленькие значения. Это может вызвать исчезновение или взрыв градиентов [1, 2], но также проблематично для алгоритмов стохастического градиентного спуска, которые обычно используются для обучения таких сетей и чувствительны к масштабу (или диапазону значений) каждой из входных характеристик.

Далее я рассмотрю каждую из этих проблем отдельно.

Добавление петель

Чтобы решить первую проблему, можно просто добавить петлю к каждому узлу [1, 2].На практике это выполняется путем добавления единичной матрицы I, к матрице смежности A перед применением правила распространения.

 In [4]: ​​I = np.matrix (np.eye (A.shape [0])) 
IOut [4]: ​​matrix ([
[1., 0., 0., 0.],
[0., 1., 0., 0.],
[0., 0., 1., 0.],
[0., 0., 0., 1.]
]) В [8] : A_hat = A + I
A_hat * X
Out [8]: matrix ([
[1., -1.],
[6., -6.],
[3., -3.],
[5., -5.]])

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

Нормализация представлений признаков

Представления признаков могут быть нормализованы по степени узла путем преобразования матрицы смежности A путем умножения ее на матрицу обратной степени D [1].Таким образом, наше упрощенное правило распространения выглядит следующим образом [1]:

f ( X , A ) = D ⁻¹ AX

Посмотрим, что будет. Сначала вычисляем матрицу степеней.

 In [9]: D = np.array (np.sum (A, axis = 0)) [0] 
D = np.matrix (np.diag (D))
D
Out [9]: матрица ([
[1., 0., 0., 0.],
[0., 2., 0., 0.],
[0., 0., 2., 0.],
[0., 0., 0., 1.]
])

Прежде чем применять правило, давайте посмотрим, что произойдет с матрицей смежности после ее преобразования.

.

Введение в графические нейронные сети | by Joao Schapke

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

Прогнозирование узла - это задача прогнозирования значения или метки для узлы в одном или нескольких графах. Ex. прогнозирование тематики статьи в сети цитирования.

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

Прогнозирование графика , прогнозирование значения или метки для графика. напр. прогнозирование токсичности конкретной молекулы.

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

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

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

Их можно решить с помощью графических автоэнкодеров .

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

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

Больше примеров задач (а также тестов и статей) можно найти здесь.

Далее мы исследуем несколько расширений сетей свертки графов и GNN.

Created by starline

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

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

Существует два основных подхода к работе с упорядоченными графами, применяя RNN или CNN .

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

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

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

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

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

Пример.

Рассмотрим изображение ниже в задаче прогнозирования потока трафика.

Из Сюй Гэн и Ягуан Ли .

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

Естественно, мы видим, что существует важная локальная корреляция с прогнозом, поток трафика зависит от близлежащих объектов вокруг него. И мы также замечаем нелокальную, контекстную корреляцию. В частности, мы можем предположить, что у POI 1 и 3 будут сильно коррелированные транспортные потоки, поскольку обе точки расположены в школе, рядом с которой находится больница и парк развлечений. Возможность идентифицировать такую ​​контекстную корреляцию должна улучшить обобщение модели. Решение, предложенное Xu Geng и Yaguang Li , заключалось в том, чтобы измерить сходство между интересующими точками, и если они очень похожи, информация будет принята во внимание:

'As' - это матрица N x N, которая служит цель, аналогичная назначению матрицы смежности, как в уравнении для GCN выше.

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

Подходы на основе внимания.

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

Методы внимания были успешно применены ко многим сверточным сетям графов, таким как GAT и GAAN.В отличие от стандартных сверточных сетей графов, таких как GCN, которые при выполнении свертки присваивают одинаковые веса всем соседним узлам, GAT вводит механизм внимания, который присваивает разные веса соседям узла.

Интересно, что исходная модель Transformer в NLP также была адаптирована для работы с графическими данными, поэтому неудивительно, что модель получила название Graph Transformer.

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

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

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

Но, в отличие от многих других, большинство проблем в GNN не имеют хорошо зарекомендовавшего себя решения или превосходной модельной архитектуры, которая служила бы решателем plug and play. Проблемы в области графа определенно требуют вертикального мышления, и широкий спектр решений может дать превосходные результаты в зависимости от проблемы и данных. Один пример из соревнования kaggle с задачей прогнозирования силы взаимодействия между атомами в конкретной связи молекулы, первое решение решало проблему с сквозным преобразователем графов, а второе-четвертое решения создавали вручную последовательности с графов и использовались стандартные преобразователи NLP, другие подходы использовали более общие нейронные сети свертки графов, такие как GAT и GCN, или использовали GNN, созданные специально для работы с данными поля, например SchNet.Это показывает неоднородность подходов в данной области.

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

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

Ссылки:

Комплексное исследование графических нейронных сетей - Zonghan Wu

Глубокое обучение на графах: обзор - Цзывэй Чжан

Графические нейронные сети: обзор методов и приложений - Цзе Чжоу, Ганку Цуй, Чжэнъян Чжан

.

Как проводить глубокое изучение графиков с помощью сверточных сетей графов | Тобиас Сковгаард Джепсен

Часть 2: Полу-контролируемое обучение с помощью сверток спектральных графов

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

  1. Высокоуровневое введение в сверточные сети графов
  2. Полу-контролируемое обучение с помощью сверток спектральных графов (это)

В предыдущем посте я дал общее представление о GCN и показал, как представление узлов обновляется на основе представления его соседей. В этом посте мы сначала получим более глубокое понимание агрегации, выполняемой во время довольно простых сверток графа, обсуждаемых в предыдущем посте.Затем мы переходим к недавно опубликованному правилу сверточного распространения графа, и я показываю, как реализовать и использовать его для полууправляемого обучения по задаче прогнозирования сообщества в Zachary’s Karate Club, небольшой социальной сети. Как показано ниже, GCN может изучать представления скрытых функций для каждого узла, который разделяет два сообщества на два достаточно сплоченных и разделенных кластера, несмотря на использование только одного обучающего примера для каждого сообщества.

Представления скрытых узлов Каратэ Клуба Захари в GCN в каждую тренировочную эпоху.

В моем предыдущем посте о GCN мы видели простую математическую основу для выражения распространения в GCN. Короче говоря, учитывая матрицу признаков N × F⁰ X и матричное представление структуры графа, например, матрица смежности N × N A из G , каждая из которых скрыта слой в GCN может быть выражен как Hⁱ = f ( H ⁱ⁻¹, A )) где H ⁰ = X и f - это правило распространения.Каждый уровень Hⁱ соответствует матрице признаков N × F , где каждая строка является представлением признака узла.

Мы видели правила распространения вида

  1. f ( Hⁱ , A ) = σ ( AHⁱWⁱ ), и
  2. f ( Hⁱ , A ) = σ ( D ⁻¹ ÂHⁱWⁱ ) , где Â = A + I , I - это единичная матрица, а D ⁻¹ - матрица обратной степени для Â .

Эти правила вычисляют представление признака узла как совокупность представлений признаков его соседей перед его преобразованием с применением весов Wⁱ и функции активации σ . Мы можем сделать шаги агрегации и преобразования более явными, выразив правила распространения 1 и 2 выше как f ( Hⁱ , A ) = transform (aggregate ( A, Hⁱ ) ), Wⁱ ) где преобразование ( M , Wⁱ ) = σ ( MWⁱ ) Агрегат и ( A, Hⁱ ) = AHⁱ для правила 1 и агрегат ( A, Hⁱ ) = D ⁻¹ H для правила 2.

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

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

Чтобы исправить эти две проблемы, правило 2 сначала применяет самостоятельные циклы, добавляя единичную матрицу к A и агрегируя с использованием преобразованной матрицы смежности Â = A + I . Затем представления признаков нормализуются путем умножения на матрицу обратной степени D ⁻¹ , превращая совокупное значение в среднее значение, где масштаб агрегированного представления признаков инвариантен к степени узла.

В дальнейшем я буду называть правило 1 правилом сумм и правило 2 правилом .

В недавней статье Кипфа и Веллинга предлагаются быстрые приближенные свертки спектрального графа с использованием правила спектрального распространения [1]:

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

Агрегирование как взвешенная сумма

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

Правило суммы
Чтобы увидеть, как вычисляется агрегированное представление признаков узла i -го с использованием правила суммирования, мы видим, как вычисляется i -я строка в агрегате.

Правило суммы как взвешенная сумма

Как показано выше в уравнении 1a, мы можем вычислить агрегированное представление признаков узла i как векторно-матричное произведение. Мы можем сформулировать это векторно-матричное произведение как простую взвешенную сумму, как показано в уравнении 1b, где мы суммируем по каждой из N строк в X .

Вклад j -го узла в совокупность в уравнении 1b определяется значением j -го столбца i -й строки A .Поскольку A является матрицей смежности, это значение равно 1, если узел j th является соседом узла i th, и в противном случае равно 0. Таким образом, уравнение 1b соответствует суммированию представлений признаков соседи и -го узла. Это подтверждает неофициальные наблюдения из предыдущего поста.

В заключение, вклад каждого соседа зависит исключительно от соседства, определенного матрицей смежности A .

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

Правило среднего как взвешенная сумма

Как видно из приведенных выше уравнений, вывод теперь немного длиннее.В уравнении 2a мы сначала преобразуем матрицу смежности A путем умножения ее на матрицу, обратную степени D . Это вычисление сделано более явным в уравнении 2b. Матрица обратной степени - это диагональная матрица, где значения по диагонали являются обратными узлами степенями s.t. значение в позиции ( i, i) является обратной степенью i, -го узла. Таким образом, мы можем удалить один из знаков суммирования, получив Уравнение 2c.Уравнение 2c может быть дополнительно сокращено, давая уравнения 2d и 2e.

Как показано уравнением 2e, теперь мы снова суммируем по каждой из N строк в матрице смежности A . Как упоминалось при обсуждении правила сумм, это соответствует суммированию по каждому соседу -го узла. Однако теперь гарантируется, что весовые коэффициенты взвешенной суммы в уравнении 2e суммируются до 1 с степенью i -го узла. Таким образом, уравнение 2e соответствует среднему значению по представлениям характеристик соседей -го узла.

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

Спектральное правило
Теперь у нас есть полезная структура для анализа спектрального правила. Посмотрим, к чему это нас приведет!

Спектральное правило как взвешенная сумма

Как и в случае с правилом среднего, мы преобразуем матрицу смежности A, используя матрицу степеней D. Однако, как показано в уравнении 3a, мы возводим матрицу степеней в степень -0.5 и умножьте на каждую сторону A . Эта операция может быть разбита, как показано в уравнении 3b. Напомним еще раз, что матрицы степеней (и их степени) диагональны. Поэтому мы можем упростить уравнение 3b, пока не достигнем выражения в уравнении 3d.

Уравнение 3e показывает кое-что весьма интересное. При вычислении совокупного представления характеристик i-го узла мы принимаем во внимание не только степень i-го узла, но также степень j-го узла.

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

В дополнение к спектральному правилу Кипф и Веллинг демонстрируют, как GCN могут использоваться для полууправляемой классификации [1].В полууправляемом обучении мы хотим использовать как помеченные, так и немаркированные примеры. До сих пор мы неявно предполагали, что доступен весь граф, т.е. что мы находимся в трансдуктивной среде. Другими словами, мы знаем все узлы, но не все метки узлов.

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

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

  1. Выполнить прямое распространение через GCN.
  2. Построчно применить сигмовидную функцию к последнему слою в GCN.
  3. Вычислите потерю кросс-энтропии для известных меток узлов.
  4. Обратное распространение потерь и обновление весовых матриц W на каждом уровне.

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

Если вы хотите продолжить, вы можете найти набор данных вместе с записной книжкой Jupyter, содержащей код для обучения и оценки GCN здесь .

Zachary’s Karate Club

Вкратце, Zachary’s Karate Club - это небольшая социальная сеть, в которой возникает конфликт между администратором и инструктором в клубе карате. Задача - предугадать, какую сторону конфликта выберет каждый член клуба карате. Графическое представление сети можно увидеть ниже.Каждый узел представляет члена клуба карате, а связь между членами указывает, что они взаимодействуют вне клуба. Администратор и инструктор отмечены буквами A и I соответственно.

Zachary’s Karate Club

Свертки спектральных графов в MXNet

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

 класс SpectralRule (HybridBlock): 
def __init __ (self,
A, in_units, out_units,
активация, ** kwargs):
super ().__init __ (** kwargs) I = nd.eye (* A.shape)
A_hat = A.copy () + ID = nd.sum (A_hat, axis = 0)
D_inv = D ** - 0,5
D_inv = nd .diag (D_inv) A_hat = D_inv * A_hat * D_inv

self.in_units, self.out_units = in_units, out_units

с self.name_scope ():
self.A_hat = self.params.get_constant ('A_hat', A_hat)
self.W = self.params.get (
'W', shape = (self.in_units, self.out_units)
)
если активация == 'identity':
self.activation = lambda X: X
else:
сам.Activation = Активация (активация)

def hybrid_forward (self, F, X, A_hat, W):
aggregate = F.dot (A_hat, X)
spread = self.activation (
F.dot (aggregate, W))
return распространяться

__init__ принимает в качестве входных данных матрицу смежности A вместе с входной и выходной размерностью представления каждого узла из сверточного слоя графа; in_units и out_units соответственно. Петли добавляются к матрице смежности A посредством сложения с матрицей идентичности I , вычисления матрицы степени D и преобразования матрицы смежности A в A_hat , как указано спектральным правилом.Это преобразование не является строго необходимым, но является более эффективным с точки зрения вычислений, поскольку в противном случае преобразование выполнялось бы во время каждого прямого прохода уровня.

Наконец, в с предложением в __init__ мы сохраняем два параметра модели - A_hat сохраняется как константа, а весовая матрица W сохраняется как обучаемый параметр.

hybrid_forward - вот где происходит волшебство. В прямом проходе мы выполняем этот метод со следующими входными данными: X , выходом предыдущего уровня и параметрами A_hat и W , которые мы определили в конструкторе __init__ .

Построение сверточной сети на основе графа

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

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

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

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

 def build_model (A, X): 
model = HybridSequential () с моделью.name_scope ():
features = build_features (A, X)
model.add (features) classifier = LogisticRegressor ()
model.add (classifier) ​​model.initialize (Uniform (1)) return model, features

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

Вы можете найти код для создания компонента features и код для LogisticRegressor в в прилагаемом блокноте Jupyter .

Обучение GCN

Код для обучения модели GCN можно увидеть ниже.Вкратце, я инициализирую двоичную функцию кросс-энтропийных потерь cross_entropy и оптимизатор SGD trainer для изучения параметров сети. Затем модель обучается для заданного количества эпох, где потерь вычисляются для каждого обучающего примера, а ошибка распространяется в обратном направлении с помощью loss.backward () . trainer.step Затем вызывается для обновления параметров модели. После каждой эпохи представление признаков, созданное слоем GCN, сохраняется в списке feature_presentations , который мы вскоре рассмотрим.

 def train (модель, особенности, X, X_train, y_train, эпохи): 
cross_entropy = SigmoidBinaryCrossEntropyLoss (from_sigmoid = True)
trainer = Trainer (
model.collect_params (), 'sgd' {learning_rate ':' sgd '{ , 'momentum': 1}) feature_presentations = [features (X) .asnumpy ()] для e в диапазоне (1, epochs + 1):
для i, x в перечислении (X_train):
y = array (y_train) [i]
с autograd.record ():
pred = model (X) [x] # Получить прогноз для выборки x
loss = cross_entropy (pred, y)
loss.backward ()
trainer.step (1) feature_presentations.append (features (X) .asnumpy ()) return feature_presentations

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

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

Визуализация функций

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

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

Ошибки классификации в клубе каратэ с использованием репрезентации 1

Коллективно классифицируя все узлы в сети, мы получаем распределение ошибок в сети, показанное выше. Здесь черный цвет указывает на неправильную классификацию. Хотя почти половина (41%) узлов классифицирована неправильно, узлы, которые тесно связаны либо с администратором, либо с инструктором (но не с обоими!), Как правило, классифицируются правильно.

Изменения в представлении признаков во время обучения с использованием представления 1

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

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

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

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

Ошибки классификации в клубе каратэ с использованием репрезентации 1

Как и раньше, мы коллективно классифицируем все узлы в сети и строим график распределения ошибок в сети, показанной выше. На этот раз неверно классифицированы только четыре узла; значительное улучшение по сравнению с представлением 1! При более внимательном рассмотрении матрицы функций эти узлы либо равноудалены (в смысле кратчайшего пути) от инструктора и администратора, либо ближе к администратору, но принадлежат к сообществу инструкторов.GCN обучается для 250 эпох с использованием представления 2.

Изменения в представлении признаков во время обучения с использованием представления 2

Как показано слева, узлы снова сгруппированы довольно близко друг к другу изначально, но несколько разделены на сообщества еще до начала обучения! По мере обучения расстояние между сообществами увеличивается.

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

Я также показал, как реализовать и обучить GCN в MXNet для выполнения полууправляемой классификации на графах, используя свертки спектральных графов с Zachary's Karate Club в качестве простого примера сети. Мы увидели, как всего лишь используя два помеченных узла, GCN все еще может достичь высокой степени разделения между двумя сетевыми сообществами в пространстве представления.

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

  1. Обучение индуктивному представлению на больших графах
    В этой статье Гамильтон и др. Предлагают несколько новых агрегатных функций. который, например, использует максимальное / среднее объединение или многослойные перцептроны.Кроме того, они также предлагают простой метод мини-пакетного обучения для сетей GCN, что значительно увеличивает скорость обучения.
  2. FastGCN: быстрое обучение с графическими сверточными сетями с помощью выборки по важности
    Недостатком метода мини-пакетной обработки, предложенного Гамильтоном и др., Является то, что количество узлов в пакете экспоненциально растет по мере увеличения числа агрегатов, выполняемых из-за их рекурсивные. Chen et. al, предлагают свой метод FastGCN, который устраняет этот недостаток, выполняя пакетное обучение сверточных слоев графа независимо.
  3. N-GCN: многомасштабная свертка графов для полууправляемой классификации узлов
    Там, где FastGCN решает проблемы обучения рекурсивных сверточных сетей графов, N-GCN бросает вызов предположению, что GCN должны быть рекурсивными вообще! Абу-Эль-Хайджа и др. вместо этого предложите плоскую архитектуру с несколькими (N) GCN, выходы которых объединены вместе. Каждый GCN захватывает окрестности на разных расстояниях (на основе семантики случайного блуждания), что позволяет избежать рекурсивной агрегации.Спасибо Бинни Мэтью за то, что обратила на это мое внимание.
.

Смотрите также