Использование нейронных сетей для решения обратной...
DESCRIPTION
Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования. Гужва А.Г. Обратная задача Магнитотеллурического Зондирования. Обратная задача: восстановление реальных характеристик пород по наблюдаемым ЭМ полям. ?. ?. ?. ?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/1.jpg)
Гужва А.Г.
Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования
![Page 2: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/2.jpg)
Обратная задача Магнитотеллурического
Зондирования
? ? ??• Обратная задача: восстановление реальных характеристик пород по наблюдаемым ЭМ полям
![Page 3: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/3.jpg)
Задача Магнитотеллурического зондирования (МТЗ)• Обратная задача МТЗ ( -> ):
Ak = , ГкRNk, RMk
• Ak – заданный дискретный оператор прямой задачи
• = (1… Mk) – вектор характеристик МТ поля, измеренных на поверхности Земли
• = (1… Nk) – вектор макропараметров среды
• Гk – область допустимых значений • k – класс разрезов
![Page 4: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/4.jpg)
Задача Магнитотеллурического зондирования (МТЗ)• Обратная задача МТЗ ( -> ):
Ak = , ГкRNk, RMk
• Система нелинейных уравнений относительно
• Неустойчива и некорректна– Вид уравнений
– Размерность данных
• Чудовищная размерность данных
![Page 5: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/5.jpg)
Задача Магнитотеллурического зондирования (МТЗ)• Прямая задача МТЗ ( -> ):
Ak = , ГкRNk, RMk
• Устойчива и корректна• Считается на суперкомпьютерах
• Эталонная база решений прямой задачи:
– Задаем 1, считаем 1=Ak1, знаем (1, 1)
– …
– Задаем N, считаем N=AkN, знаем (N, N)
![Page 6: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/6.jpg)
Задача Магнитотеллурического зондирования (МТЗ)• Приближенное решение обратной
задачи – * appr(1 … N, a1,…,aJ)
– ai – неопределенные коэффициенты
– appr – заданная функция некоторого вида
– Решение задачи нелинейной регрессии на эталонной базе решений прямой задачи
• Полученное решение есть приближенный обратный оператор задачи
![Page 7: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/7.jpg)
Задача Магнитотеллурического зондирования (МТЗ), 2D
• 336 блоков ()• Электропроводность
• 10-4< <1 См/м
• 6552 входных признака ()
• 4 компоненты• Пространственная сетка – 126• Частотная сетка – 13
• 30000 эталонных примеров решения прямой задачи
• Интересующая область : до 5 км
5 км
10 км
17 км
30 км
0 км Воздух: =0
100 км.
• Решение задач нелинейной регрессии для каждого блока по-отдельности
• Итого: 336 задач нелинейной регрессии
![Page 8: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/8.jpg)
Задача МТЗ. Пример распределения
![Page 9: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/9.jpg)
Задача нелинейной регрессии
Дано:• Задан конечный обучающий набор
векторов 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, )
![Page 10: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/10.jpg)
Задача нелинейной регрессииТребуется:
• Аппроксимация y*
с помощью f(x, ) • Найти решение системы уравнений
по y*(x1) = f(x1, )
…
y*(xm) = f(xm, )при котором достигался бы минимум функционала ошибки:
E(, XTst) = xXTst(y*(x) - f(x, ))2
, xi XTrn
![Page 11: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/11.jpg)
Нейронные сети. Многослойные персептроны• МСП - семейство
параметрических вектор-функций
• МСП с 1 скрытым слоем (f: RM → RP)
– () С1 – ограниченная монотонно возрастающая действительная функция
– и u – матрицы весов (N x (M + 1) и P x (N + 1))
– k = 1..P
– N – характеризует сложность конструкции
],0[],0[][*],[*],[,,,,1 1
kuivjxijvkiuvuNxfN
i
M
jk
![Page 12: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/12.jpg)
Традиционный способ решения задачи нелинейной регрессии для
многослойных персептронов (обучение сети)
• Оптимизационная задача по подбору элементов матриц весов
• Решение методом наименьших квадратов путем минимизации функционала ошибки:
E(, XTrn) = xXTrn(y*(x) - f(x, ))2 → min
E(, XTst) используется для контроля останова процесса обучения нейронной сети
Например, используется градиентный спуск
![Page 13: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/13.jpg)
Задача МТЗ.
• 1 большая обратная задача МТЗ– «В лоб» не решается
– Размерность входного вектора 6552
– Размерность выходного вектора 336
• 6780 небольших задач нелинейной регрессии
– Размерность входного вектора 1648
– Размерность выходного вектора 1
![Page 14: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/14.jpg)
Задача МТЗ. Формально.
• Решение ~7000 задач нелинейной регрессии– Вид аппроксимирующей функции y(x, u, ):
где
u, – матрицы неопределенных коэффициентов
• Для всех задач нелинейной регрессии входной набор данных одинаков
– Размерность вектора входных данных x = 1648
• Выходные наборы данных уникальны– Размерность вектора выходных данных y = 1
],0[],0[][*],[*],[,,8
1
1648
1
kuivjxijvkiuvuxyi j
exp11
![Page 15: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/15.jpg)
Задача МТЗ. Формально.
• 30000 примеров эталонной базы решений
• Решение задачи нелинейной регрессии (подбор u, )
– Минимизация функционала ошибки вида
где W = {u, } – условное обозначение матриц весов многослойного персептрона y(x, W)
Например, использование метода градиентного спуска
1,30000i
2ii yW,xyWE
![Page 16: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/16.jpg)
CPU. Градиентный спуск
Минимизация функционала ошибки вида
Размерность W ~ 104
Градиентный спуск:
1. W=W0
2. W=W - *grad E(W), где ~10-1–10-3
3. goto 2
Распараллеливается на MPI
1,30000i
2ii yW,xyWE
![Page 17: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/17.jpg)
CPU
• 6780 небольших задач нелинейной регрессии
– 5 AMD Athlon 64 x2 Dual 6000+ 3.0 GHz
– 1 ядро того же уровня
– Итого 11 ядер
• Вычисления во float-ах• Своя спец. библиотека• Итого - 2 месяца вычислений
– С перерывами на выходные
![Page 18: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/18.jpg)
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)
![Page 19: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/19.jpg)
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)
![Page 20: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/20.jpg)
CUDA. Реализация
• Использование CUBLAS для вычисления значений функции (cublasSgemm)
………… ………
• Аналогично с производными
],0[],0[][*],[*],[,, 1
8
11
1648
1111111 kuivjxijvkiuvuxy
i j
],0[],0[][*],[*],[,,8
1
1648
1
kuivjxijvkiuvuxy bi
bj
abbbba
![Page 21: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/21.jpg)
CUDA. Реализация • Эффект за счет резкого уменьшения числа операций работы с памятью
– Необходимость переноса больших объемов данных между узлами
– CUDA: наличие shared memory
• Основное время при проектировании
– Расположение данных в памяти
• Код спроектирован с нуля• Вычисления во float-ах• Вид аппроксимационной функции
![Page 22: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/22.jpg)
Результаты
N CPU / GPU Программа / железо
Число сетей
Итераций обучения 1 сети за минуту
1 GPU CUDA, (Tesla C2050) new
256 3120
2 GPU CUDA, (Tesla C2050) 256 2580
3 GPU CUDA, (GTX 285) 256 2580
4 GPU CUDA, (GTX 260) 256 1818
5 GPU CUDA, (Geforce 8600M GT)
64 144
6 CPU Своя нейросетевая библиотека
1 35
7 CPU Neuroshell 2 1 21
8 CPU Matlab 2008a 1 7• CPU: AMD Athlon 64 x2 Dual 6000+ 3.0 GHz
• В GPU-реализации не используется Zero copy memory
![Page 23: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/23.jpg)
GPU
• 6780 небольших задач нелинейной регрессии
– 1 Tesla C2050
– 256 параллельно решаемых задач нелинейной регрессии
– Итого: ~13 часов
– На разогнанном GTX 580 ~ 6 часов (ориентировочно)
![Page 24: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/24.jpg)
«Грабли». Учитывать при проектировании• Доступные ресурсы для ядра
– Регистры, shared memory, потоки
• RTFM: Zero copy, pinned memory, …
– А также прочие полезные «фичи»
• Bottleneck для этой задачи– Пропускная способность
внутренней шины данных (~100 GB/s)
![Page 25: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/25.jpg)
«Грабли». Раскрытие циклов//// Ядро с циклом__global__ void kernel(int N){ ... for (int i = 0; i < N; i++)
//// Цикл ...
//// Тело цикла ... }
//// Этот код быстрее!template<int N> __global__ void kernel(){ ... for (int i = 0; i < N; i++) //// Цикл ...
//// Тело цикла ...
}• N – заранее известно
• N может принимать огр. число значений
![Page 26: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/26.jpg)
«Грабли». Использование CUDA Primitives• CUDA parallel primitives
– Reduction
– Scan
– И т.д.
• В виде отдельных процедур– CUDPP
• Внедрить в собственное ядро!
![Page 27: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/27.jpg)
«Грабли». Если глючит, то…
• nvidia-smi• cuda-memcheck• Проверять cudaGetLastError();• В код повставлять cudaThreadSynchronize();
• Выделение shared памяти__global__ void kernel(){ __shared__ float klmn[100]; //// в klmn – не нули!!!!!!
...}
![Page 28: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/28.jpg)
«Грабли». Если глючит, то…
• Воспроизводимость глюка– Запуск процесса в цикле
– Каждый раз сравнение результатов, в т.ч. промежуточных массивов данных
• Компилятор nvcc• RTFM, форумы, коллеги
![Page 29: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/29.jpg)
«Грабли». Если глючит, то…
• Если ничего не помогло, то…
![Page 30: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/30.jpg)
Распараллеливание
• Вычисление функции y(x, a)• Варианты действий:
– Распараллеливание y(x, a)
– Одновременно y(x1, a), …, y(xN, a)
– Одновременно y(x, a1), …, y(x, aM)
– Одновременно y(x1, a1), …, y(xN, aM)
![Page 31: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования](https://reader035.vdocuments.net/reader035/viewer/2022062308/56812ba1550346895d8fcd14/html5/thumbnails/31.jpg)
Спасибо за внимание!