1 / 31

Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования. Гужва А.Г. Обратная задача Магнитотеллурического Зондирования. Обратная задача: восстановление реальных характеристик пород по наблюдаемым ЭМ полям. ?. ?. ?. ?.

Download Presentation

Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования Гужва А.Г.

  2. Обратная задача Магнитотеллурического Зондирования • Обратная задача: восстановление реальных характеристик пород по наблюдаемым ЭМ полям ? ? ? ?

  3. Задача Магнитотеллурического зондирования (МТЗ) • Обратная задача МТЗ( ->): Ak=, ГкRNk, RMk • Ak – заданный дискретный оператор прямой задачи • =(1… Mk) – вектор характеристик МТ поля, измеренных на поверхности Земли • =(1… Nk) – вектор макропараметров среды • Гk– область допустимых значений  • k – класс разрезов

  4. Задача Магнитотеллурического зондирования (МТЗ) • Обратная задача МТЗ( ->): Ak=, ГкRNk, RMk • Система нелинейных уравнений относительно  • Неустойчива и некорректна • Вид уравнений • Размерность данных • Чудовищная размерность данных

  5. Задача Магнитотеллурического зондирования (МТЗ) • Прямая задача МТЗ( -> ): Ak=, ГкRNk, RMk • Устойчива и корректна • Считается на суперкомпьютерах • Эталонная база решений прямой задачи: • Задаем 1, считаем 1=Ak1, знаем (1, 1) • … • Задаем N, считаем N=AkN, знаем (N, N)

  6. Задача Магнитотеллурического зондирования (МТЗ) • Приближенное решение обратной задачи • *  appr(1 … N, a1,…,aJ) • ai – неопределенные коэффициенты • appr– заданная функция некоторого вида • Решение задачи нелинейной регрессии на эталонной базе решений прямой задачи • Полученное решение есть приближенный обратный оператор задачи

  7. Задача Магнитотеллурического зондирования (МТЗ), 2D Воздух: =0 0 км • 336 блоков () • Электропроводность • 10-4< <1См/м • 6552 входных признака () • 4 компоненты • Пространственная сетка – 126 • Частотная сетка – 13 • 30000 эталонных примероврешения прямой задачи • Интересующая область : до 5 км 5 км 10 км  17 км 30 км 100 км. • Решение задач нелинейной регрессиидля каждого блока по-отдельности • Итого: 336 задач нелинейной регрессии

  8. Задача МТЗ. Пример распределения

  9. Задача нелинейной регрессииДано: • Задан конечный обучающий набор векторов X={x1…xn}, xi RM, i = 1..n • Имеется зависимость y=y*(x), y*: RM → RP, для которой известны yi = y*(xi) для xi X • Задано разбиение Xна тренировочный набор данных XTrnи тестовый набор данных XTst • Задан вид семейства нелинейных параметрических функций M переменных y=f(x,)

  10. Задача нелинейной регрессииТребуется: • Аппроксимация y* с помощью f(x, ) • Найти решение системы уравненийпо  y*(x1)=f(x1,) … y*(xm)=f(xm,) при котором достигался бы минимум функционала ошибки: E(, XTst)=xXTst(y*(x)-f(x,))2 , xi XTrn

  11. Нейронные сети. Многослойные персептроны • МСП - семейство параметрических вектор-функций • МСП с 1 скрытым слоем (f: RM → RP) • () С1 – ограниченная монотонно возрастающая действительная функция • и u – матрицы весов (N x (M + 1) и P x (N + 1)) • k = 1..P • N – характеризует сложность конструкции

  12. Традиционный способ решения задачи нелинейной регрессиидля многослойных персептронов (обучение сети) • Оптимизационная задача по подбору элементов матриц весов • Решение методом наименьших квадратов путем минимизации функционала ошибки: E(,XTrn)=xXTrn(y*(x)-f(x,))2→min E(, XTst) используется для контроля останова процесса обучения нейронной сети Например, используется градиентный спуск

  13. Задача МТЗ. • 1 большая обратная задача МТЗ • «В лоб» не решается • Размерность входного вектора 6552 • Размерность выходного вектора 336 • 6780 небольших задач нелинейной регрессии • Размерность входного вектора 1648 • Размерность выходного вектора 1

  14. Задача МТЗ. Формально. • Решение ~7000 задач нелинейной регрессии • Вид аппроксимирующей функции y(x, u, ): где u,  – матрицы неопределенных коэффициентов • Для всех задач нелинейной регрессии входной набор данных одинаков • Размерность вектора входных данных x = 1648 • Выходные наборы данных уникальны • Размерность вектора выходных данных y =1

  15. Задача МТЗ. Формально. • 30000 примеров эталонной базы решений • Решение задачи нелинейной регрессии (подбор u, ) • Минимизация функционала ошибки вида где W = {u, } – условное обозначение матриц весовмногослойного персептрона y(x, W) Например, использование метода градиентного спуска

  16. CPU. Градиентный спуск Минимизация функционала ошибки вида Размерность W ~ 104 Градиентный спуск: • W=W0 • W=W - *grad E(W), где ~10-1–10-3 • goto 2 Распараллеливается на MPI

  17. CPU • 6780 небольших задач нелинейной регрессии • 5 AMD Athlon 64 x2 Dual 6000+ 3.0 GHz • 1 ядро того же уровня • Итого 11 ядер • Вычисления во float-ах • Своя спец. библиотека • Итого - 2 месяца вычислений • С перерывами на выходные

  18. CUDA. Распараллеливание • Нет • Убыстрение 1 вычисления y(x, u, ), y/u, y/ • Да! • Параллельное вычисление • y(x1, u, ), …, y(xN, u, ) • Параллельное решение нескольких задач нелинейной регрессии • y(x, u1, 1), …, y(x, uM, M) • y(x1, u1, 1), …, y(xN, uM, M)

  19. CUDA. Реализация • Функционал ошибки • E(W) = i=1,N (y(xi,W) - yi)2 • grad E(W) = 2 * i=1,N (y(xi,W)-yi) * y/W(xi) • Одновременное решение нескольких задач нелинейной регрессии • grad E1(W1) = 2 * i=1,N (y(xi,W1)-yi) * y/W|1(xi) ……… ……… ………. • grad Ek(Wk) = 2 * i=1,N (y(xi,Wk)-yi) * y/W|k(xi)

  20. CUDA. Реализация • Использование CUBLAS для вычисления значений функции (cublasSgemm) ………… ……… • Аналогично с производными

  21. CUDA.Реализация • Эффект за счет резкого уменьшения числа операций работы с памятью • Необходимость переноса больших объемов данных между узлами • CUDA: наличие shared memory • Основное время при проектировании • Расположение данных в памяти • Код спроектирован с нуля • Вычисления во float-ах • Вид аппроксимационной функции

  22. Результаты • CPU: AMD Athlon 64 x2 Dual 6000+ 3.0 GHz • В GPU-реализации неиспользуется Zero copy memory

  23. GPU • 6780 небольших задач нелинейной регрессии • 1 Tesla C2050 • 256 параллельно решаемых задач нелинейной регрессии • Итого: ~13 часов • На разогнанном GTX 580 ~ 6 часов(ориентировочно)

  24. «Грабли». Учитывать при проектировании • Доступные ресурсы для ядра • Регистры, shared memory, потоки • RTFM: Zero copy, pinned memory, … • А также прочие полезные «фичи» • Bottleneck для этой задачи • Пропускная способность внутренней шины данных (~100 GB/s)

  25. «Грабли». Раскрытие циклов //// Ядро с циклом __global__ void kernel(intN) { ... for (inti = 0; i < N; i++)//// Цикл ...//// Тело цикла ... } //// Этот код быстрее! template<intN> __global__ void kernel() { ... for (inti = 0; i < N; i++) //// Цикл ...//// Тело цикла ... } • N – заранее известно • N может принимать огр. число значений

  26. «Грабли». Использование CUDA Primitives • CUDA parallel primitives • Reduction • Scan • И т.д. • В виде отдельных процедур • CUDPP • Внедрить в собственное ядро!

  27. «Грабли». Если глючит, то… • nvidia-smi • cuda-memcheck • Проверять cudaGetLastError(); • В код повставлятьcudaThreadSynchronize(); • Выделение shared памяти __global__ void kernel() { __shared__ float klmn[100];//// в klmn– не нули!!!!!! ... }

  28. «Грабли». Если глючит, то… • Воспроизводимостьглюка • Запуск процесса в цикле • Каждый раз сравнение результатов, в т.ч. промежуточных массивов данных • Компилятор nvcc • RTFM, форумы, коллеги

  29. «Грабли». Если глючит, то… • Если ничего не помогло, то…

  30. Распараллеливание • Вычисление функции y(x, a) • Варианты действий: • Распараллеливание y(x, a) • Одновременно y(x1, a), …, y(xN, a) • Одновременно y(x, a1), …, y(x, aM) • Одновременно y(x1, a1), …, y(xN, aM)

  31. Спасибо за внимание!

More Related