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

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

Embed Size (px)

DESCRIPTION

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

Citation preview

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

Гужва А.Г.

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

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

Обратная задача Магнитотеллурического

Зондирования

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

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

Задача Магнитотеллурического зондирования (МТЗ)• Обратная задача МТЗ ( -> ):

Ak = , ГкRNk, RMk

• Ak – заданный дискретный оператор прямой задачи

• = (1… Mk) – вектор характеристик МТ поля, измеренных на поверхности Земли

• = (1… Nk) – вектор макропараметров среды

• Гk – область допустимых значений • k – класс разрезов

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

Задача Магнитотеллурического зондирования (МТЗ)• Обратная задача МТЗ ( -> ):

Ak = , ГкRNk, RMk

• Система нелинейных уравнений относительно

• Неустойчива и некорректна– Вид уравнений

– Размерность данных

• Чудовищная размерность данных

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

Задача Магнитотеллурического зондирования (МТЗ)• Прямая задача МТЗ ( -> ):

Ak = , ГкRNk, RMk

• Устойчива и корректна• Считается на суперкомпьютерах

• Эталонная база решений прямой задачи:

– Задаем 1, считаем 1=Ak1, знаем (1, 1)

– …

– Задаем N, считаем N=AkN, знаем (N, N)

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

Задача Магнитотеллурического зондирования (МТЗ)• Приближенное решение обратной

задачи – * appr(1 … N, a1,…,aJ)

– ai – неопределенные коэффициенты

– appr – заданная функция некоторого вида

– Решение задачи нелинейной регрессии на эталонной базе решений прямой задачи

• Полученное решение есть приближенный обратный оператор задачи

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

Задача Магнитотеллурического зондирования (МТЗ), 2D

• 336 блоков ()• Электропроводность

• 10-4< <1 См/м

• 6552 входных признака ()

• 4 компоненты• Пространственная сетка – 126• Частотная сетка – 13

• 30000 эталонных примеров решения прямой задачи

• Интересующая область : до 5 км

5 км

10 км

17 км

30 км

0 км Воздух: =0

100 км.

• Решение задач нелинейной регрессии для каждого блока по-отдельности

• Итого: 336 задач нелинейной регрессии

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

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

Page 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, )

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

Задача нелинейной регрессииТребуется:

• Аппроксимация y*

с помощью f(x, ) • Найти решение системы уравнений

по y*(x1) = f(x1, )

y*(xm) = f(xm, )при котором достигался бы минимум функционала ошибки:

E(, XTst) = xXTst(y*(x) - f(x, ))2

, xi XTrn

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

Нейронные сети. Многослойные персептроны• МСП - семейство

параметрических вектор-функций

• МСП с 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: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

Традиционный способ решения задачи нелинейной регрессии для

многослойных персептронов (обучение сети)

• Оптимизационная задача по подбору элементов матриц весов

• Решение методом наименьших квадратов путем минимизации функционала ошибки:

E(, XTrn) = xXTrn(y*(x) - f(x, ))2 → min

E(, XTst) используется для контроля останова процесса обучения нейронной сети

Например, используется градиентный спуск

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

Задача МТЗ.

• 1 большая обратная задача МТЗ– «В лоб» не решается

– Размерность входного вектора 6552

– Размерность выходного вектора 336

• 6780 небольших задач нелинейной регрессии

– Размерность входного вектора 1648

– Размерность выходного вектора 1

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

Задача МТЗ. Формально.

• Решение ~7000 задач нелинейной регрессии– Вид аппроксимирующей функции y(x, u, ):

где

u, – матрицы неопределенных коэффициентов

• Для всех задач нелинейной регрессии входной набор данных одинаков

– Размерность вектора входных данных x = 1648

• Выходные наборы данных уникальны– Размерность вектора выходных данных y = 1

],0[],0[][*],[*],[,,8

1

1648

1

kuivjxijvkiuvuxyi j

exp11

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

Задача МТЗ. Формально.

• 30000 примеров эталонной базы решений

• Решение задачи нелинейной регрессии (подбор u, )

– Минимизация функционала ошибки вида

где W = {u, } – условное обозначение матриц весов многослойного персептрона y(x, W)

Например, использование метода градиентного спуска

1,30000i

2ii yW,xyWE

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

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: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

CPU

• 6780 небольших задач нелинейной регрессии

– 5 AMD Athlon 64 x2 Dual 6000+ 3.0 GHz

– 1 ядро того же уровня

– Итого 11 ядер

• Вычисления во float-ах• Своя спец. библиотека• Итого - 2 месяца вычислений

– С перерывами на выходные

Page 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)

Page 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)

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

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: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

CUDA. Реализация • Эффект за счет резкого уменьшения числа операций работы с памятью

– Необходимость переноса больших объемов данных между узлами

– CUDA: наличие shared memory

• Основное время при проектировании

– Расположение данных в памяти

• Код спроектирован с нуля• Вычисления во float-ах• Вид аппроксимационной функции

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

Результаты

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: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

GPU

• 6780 небольших задач нелинейной регрессии

– 1 Tesla C2050

– 256 параллельно решаемых задач нелинейной регрессии

– Итого: ~13 часов

– На разогнанном GTX 580 ~ 6 часов (ориентировочно)

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

«Грабли». Учитывать при проектировании• Доступные ресурсы для ядра

– Регистры, shared memory, потоки

• RTFM: Zero copy, pinned memory, …

– А также прочие полезные «фичи»

• Bottleneck для этой задачи– Пропускная способность

внутренней шины данных (~100 GB/s)

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

«Грабли». Раскрытие циклов//// Ядро с циклом__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: Использование нейронных сетей для решения обратной задачи Магнитотеллурического Зондирования

«Грабли». Использование CUDA Primitives• CUDA parallel primitives

– Reduction

– Scan

– И т.д.

• В виде отдельных процедур– CUDPP

• Внедрить в собственное ядро!

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

«Грабли». Если глючит, то…

• nvidia-smi• cuda-memcheck• Проверять cudaGetLastError();• В код повставлять cudaThreadSynchronize();

• Выделение shared памяти__global__ void kernel(){ __shared__ float klmn[100]; //// в klmn – не нули!!!!!!

...}

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

«Грабли». Если глючит, то…

• Воспроизводимость глюка– Запуск процесса в цикле

– Каждый раз сравнение результатов, в т.ч. промежуточных массивов данных

• Компилятор nvcc• RTFM, форумы, коллеги

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

«Грабли». Если глючит, то…

• Если ничего не помогло, то…

Page 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)

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

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