Использование нейронных сетей для решения обратной...

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

Upload: darrius-echo

Post on 30-Dec-2015

65 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

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