Алгоритм увеличения точности нейронных сетей и его приложения
![]()
|
𝑘 . Вычислим норму в минус первой степени для каждого такого вектора с помощью встроенной функции rnormf, а затем в качестве нормировочного коэффициента выберем меньшее из 1 и этой величины, например G[1] = fminf(1.0f, rnormf(k, De1Dz)). Теперь при вычислении градиента E, каждую e достаточно домножить на соответствующий G: 𝜕𝐸 𝜕 (︀𝜕 𝑠[𝑖] 𝑣 )︀ = e0 * G[0] * De0DZ[i] + e1 * G[1] * De1DZ[i]+ e2 * G[2] * De2DZ[i] + . . . → ADDR _ dE[i][tid]. 4.4.4.5. Пример. Приведём простой пример. Пусть нас интересует уравнение 𝑥 1 𝜕𝑣 𝜕𝑥 1 + 𝜕𝑣 𝜕𝑥 2 ≡ e0 = 0, (4.4.6) а для улучшения результатов мы решили взять одну дополнительная производную по 𝑥 : 𝜕𝑣 𝜕𝑥 1 + 𝑥 1 𝜕 2 𝑣 𝜕𝑥 2 1 + 𝜕 2 𝑣 𝜕𝑥 1 𝜕𝑥 2 ≡ e1 = 0. (4.4.7) Для простоты мы не будем рассматривать замену функции, которая требовалась бы для удовлетворения граничных условий. Список производных для этой задачи представлен в Таблице 8. Доступные ядру производные входа имеют следующий вид: ADDRX[0][2 * tid + 0] = 𝑥 1 [𝑎], ADDRX[0][2 * tid + 1] = 𝑥 2 [𝑎], ADDRX[1][2 * tid + 0] = 1, 106 ADDRX[1][2 * tid + 1] = 0, ADDRX[2][2 * tid + 0] = 0, ADDRX[2][2 * tid + 1] = 1. Остальные равны нулю. В результате прямого прохода будут посчитаны выходы сети ADDR[0][tid] = 𝑣 [𝑎] , ADDR[1][tid] = 𝜕𝑣 𝜕𝑥 1 [𝑎] , ADDR[2][tid] = 𝜕𝑣 𝜕𝑥 2 [𝑎] , ADDR[3][tid] = 𝜕 2 𝑣 𝜕𝑥 2 1 [𝑎] , ADDR[4][tid] = 𝜕 2 𝑣 𝜕𝑥 1 𝜕𝑥 2 [𝑎] . Вычисление невязки выглядит следующим образом e0 = ADDRX[0][2 * tid + 0] * ADDR[1][tid] + ADDR[2][tid]; e1 = ADDR[1][tid] + ADDRX[0][2 * tid + 0] * ADDR[3][tid] + ADDR[4][tid]; Два вектора De_DZ имеют по пять компонент (︂ 𝜕e0 𝜕𝑣 , 𝜕e0 𝜕 (𝜕𝑣/𝜕𝑥 1 ) , 𝜕e0 𝜕 (𝜕𝑣/𝜕𝑥 2 ) , 𝜕e0 𝜕 (𝜕 2 𝑣/𝜕𝑥 2 1 ) , 𝜕e0 𝜕 (𝜕 2 𝑣/𝜕𝑥 1 𝜕𝑥 2 ) )︂ = =(0, ADDRX[0][2 * tid + 0], 1, 0, 0) → floatDe0DZ, (︂ 𝜕e1 𝜕𝑣 , 𝜕e1 𝜕 (𝜕𝑣/𝜕𝑥 1 ) , 𝜕e1 𝜕 (𝜕𝑣/𝜕𝑥 1 ) , 𝜕e1 𝜕 (𝜕 2 𝑣/𝜕𝑥 2 1 ) , 𝜕e1 𝜕 (𝜕 2 𝑣/𝜕𝑥 1 𝜕𝑥 2 ) )︂ = = (0, 1, 0, ADDRX[0][2 * tid + 0], 1) → floatDe1DZ. Вычисление градиента E выглядит следующим образом 𝜕𝐸 𝜕𝑣 = (( (( (( (( ( 𝑒0 * 𝐷𝑒0𝐷𝑍[0] + (( (( (( (( ( 𝑒1 · 𝐷𝑒1𝐷𝑍[0] = 0 → ADDR _ dE[0][tid], 𝜕𝐸 𝜕 (𝜕𝑣/𝜕𝑥 1 ) = e0 * De0DZ[1] + e1 * De1DZ[1] → ADDR _ dE[1][tid], 𝜕𝐸 𝜕 (𝜕𝑣/𝜕𝑥 2 ) = e0 * De0DZ[2] + (( (( (( (( ( 𝑒1 * 𝐷𝑒1𝐷𝑍[2] → ADDR _ dE[2][tid], 107 𝜕𝐸 𝜕 (𝜕 2 𝑣/𝜕𝑥 2 1 ) = (( (( (( (( ( 𝑒0 * 𝐷𝑒0𝐷𝑍[3] + e1 · De1DZ[3] → ADDR _ dE[3][tid], 𝜕𝐸 𝜕 (𝜕 2 𝑣/𝜕𝑥 1 𝜕𝑥 2 ) = (( (( (( (( ( 𝑒0 * 𝐷𝑒0𝐷𝑍[4] + e1 * De1DZ[4] → ADDR _ dE[4][tid]. Мы вычеркнули члены, заведомо равные нулю на основе вида векторов De0DZ, De1DZ. В реальных случаях за счет этого можно значительно снизить количество генерируемого кода. Нормировку мы пропустили, поскольку она тривиальна. 4.4.5. Генерация кода. Хоть решаемые уравнения зачастую довольно просты, необ- ходимость замены функции вида (1.2.21), а также взятие многочисленных производных от невязки делают ручное написание кода практически невозможным. Эту проблему можно успешно решить с помощью любой системы символьных вычислений, в данном случае мы воспользовались Mathematica. На основе изначального уравнения, замены и выбранных до- полнительных производных генерировался код ядра, вычисляющего невязку и градиент 𝐸 по матрицам выхода. Опишем основные принципы работы этого кода на примере краевой задачи для Пуассона на единичном круге Δ𝑢 = 𝑔, Γ : 𝑥 2 1 + 𝑥 2 2 ≤ 1, 𝑢| 𝜕Γ = 0. Во-первых, вычислим лапласиан после замены функции 𝑢 = 𝑤 · (︀1 − 𝑥 2 1 − 𝑥 2 2 )︀ e0 = Laplacian[v[x, y](1 − x 2 − y 2 ), {x, y}]. В результате e0 инициализируется выражением −4u[x, y] − 4yv (0,1) [x, y] + (︀1 − x 2 − y 2 )︀ v (0,1) [x, y]− −4xv (1,0) [x, y] + (︀1 − x 2 − y 2 )︀ v (2,0) [x, y]. Как можно заметить, Mathematica также обозначает производные мульти-индексами. Далее нужно прочитать список производных из файла SconfS.txt, найти их в верхних индексах v и сделать замены вида v (0,1) [x, y] → ADDR[[2, h * tid]], (4.4.8) где первым в двойных квадратных скобках указан номер производной согласно списку из SconfS.txt (напомним, что элемент массива в Mathematica вызывается двойными скобками). С точки зрения среды, правая часть (4.4.8) есть символьная переменная, поскольку массив ADDR не был инициализирован. После замен к выражению останется применить функцию CForm, для того чтобы получить готовый код вычисления невязки для функции ядра. Чтобы найти градиент 𝐸 по элементам выходных матриц, достаточно продифференцировать e0 108 по всем символьным переменным типа ADDR[[_,h*tid]] с помощью встроенной функции D. Например, D[e0, ADDR[[2, h * tid]]] будет равно −4y + (1 − x 2 − y 2 ) , то есть третьему элементу вектора De0DZ. Подобные вы- ражения легко проверить на равенство нулю и исключить из дальнейшего кода. Выводы к Главе 4 Метод увеличения точности многослойных персептронов, изложенный в Главах 2 и 3, значительно повышает вычислительную нагрузку при обучении нейронных сетей. Однако, как и в случае классического обучения, современные GPU позволяют заметно ускорить этот процесс. Практическая проблема заключается в том, что современные прикладные пакеты обучения нейронных сетей недостаточно оптимизированы для обучения старших производ- ных. Для классического обратного распространения без производных, их эффективность является величиной порядка 50 ∼ 80% [129]. Однако, эта производительность является ре- зультатом бурного развития машинного обучения начиная с 2010 года. Например, ещё в 2015 году их эффективность для стандартных постановок была около 10% . Так как задачи, свя- занные с высоким порядком дифференцирования, еще практически не исследуются, эффек- тивность общедоступных комплексов для них в данный момент ещё ниже. Для решения этой проблемы, автором было получено обобщение алгоритма обратного распространения ошиб- ки на случай минимизации выражения, зависящего от любых производных нейронной сети. С помощью анализа комбинаторной структуры производных были сделаны значительные упрощения выражений для обратного распространения ошибки. Дополнительно приведены методики, позволяющие повысить аппаратную эффективность GPU для большого класса задач. Код, написанный на CUDA C/C++ с учетом изложенных методик, составляет основ- ную часть программного комплекса «cpde-2». Он предназначен для обучения производных нейронной сети, поддерживает обучение с исключением, а также может использоваться для решения уравнений в частных производных. Он был использован для всех задач, описанных в данной диссертации. В частности, с его помощью в Главе 3 было впервые получено преиму- щество перед конечными разностями. Для большинства примеров, программный комплекс «cpde-2» имеет аппаратную эффективность порядка 50 ∼ 80% 109 Заключение В работе было впервые продемонстрировано, что включение производных в процесс градиентного обучения позволяет в несколько десятков раз повысить точность глубоких ней- ронных сетей, а также понизить число точек, необходимых для их тренировки. На основе этого способа был построен алгоритм обучения с исключением, позволяющий увеличить ка- чество тренировки на несколько порядков и достичь относительной точности 10 −6 , тогда как стандартный метод градиентного обучения в аналогичной ситуации имеет точность порядка 10 −3 . При решении уравнений в частных производных, обучение с исключением позволяет сравнять точность нейросетевого метода с точностью классических методов, а также суще- ственно понизить требования на минимальный шаг. Метод также применим для получения решений с большими градиентами, при наличии которых требуется введение неравномерной сетки. Для многомерных краевых задач, в совокупности с разработанным методом случай- ных направлений, метод обучения с исключением впервые оказывается быстрее конечно- разностной схемы, а также значительно снижает требования по памяти из-за большего до- пустимого шага сетки. Математические причины увеличения точности и строгие доказатель- ства выходят за пределы данной работы. Тем не менее, нахождение класса задач, точность и эффективность решения которых с помощью нейронных сетей может быть значительно увеличена, имеет практическое значение. Эффект от включения производных в процесс обучения глубоких сетей ни в коем случае не ограничиваются случаями малой размерности, и автором было зафиксировано крайне благоприятное их влияние на аппроксимацию функции, определённой на 64–мерном единичном кубе. Большим потенциалом обладает задача об адаптации результатов данной диссертации к распознаванию образов. По-видимому, для этого необходимо вычисление про- изводных от функций типа классификатора. Таким образом, у обучения c производными обнаружен значительный потенциал, а разработанный для этих целей комплекс программ «cpde-2», эффективно использующий GPU, может ускорить получение новых результатов в этой области. 110 Обозначения 𝑁 : размерность пространства. 𝑥 𝛼 ≡ (𝑥 1 , . . . , 𝑥 𝑁 ) ≡ ⃗ 𝑥 : входной вектор для нейронной сети. 𝑥 𝛼𝑎 ≡ (𝑥 1 , . . . , 𝑥 𝑁 ) 𝑎 = ⃗ 𝑥 𝑎 : матрица входных векторов. Столбцы, перечисляемые ин- дексом 𝑎 ∈ [1, 𝑀 ] , содержат входные вектора, компоненты которых расположены по стро- кам. 𝑧 𝛽 , 𝑧 𝛾 , ...: активности нейронов на скрытых слоях. Верхний греческий индекс зависит от номера слоя. Так, 𝑧 𝛽 обозначает вектор активностей на первом скрытом слое, 𝑧 𝛾 на втором, и так далее. Положение индекса выбрано для удобства записи. Буквами 𝜃 и 𝜅 обозначаются два последовательных слоя без указания их номеров. 𝑧 𝛽𝑎 , 𝑧 𝛾𝑎 , ... : матрицы активностей нейронов на скрытых слоях. Столбцы, перечисля- емые индексом 𝑎 , содержат значения, соответствующие разным входным векторам. 𝑊 𝛽𝛼 , 𝑊 𝛾𝛽 , ... : матрицы весов нейронной сети. Имеют пару индексов, совпадающих с индексами слоёв, которые они соединяют. Так, матрица 𝑊 𝜃𝜅 содержит веса соединяющие предыдущий слой 𝜅 с последующим 𝜃 𝑡 𝛼 , 𝑡 𝛽 , ... : параметры сдвига для каждого слоя. Имеют греческий индекс, совпадающий с индексом нейронов, к активностям которых они прибавляются. 𝜎 , 𝜎 (︀𝑧 𝜃 )︀ , 𝜎 (︀𝑧 𝜃𝑎 )︀ : функция активации, действует на вектор либо матрицу поэлемент- но. 𝑣 𝜔 : выход нейронной сети. 𝑣 𝜔𝑎 : матрица выхода нейронной сети, индекс 𝑎 перечисляет соответствующие паттер- ны входа. 𝛿𝑊 (0) : начальный шаг для всех весов в алгоритме RProp. 𝜕 𝑠 : мульти-индексное обозначение производной, где 𝑠 есть упорядоченное множество целых положительных чисел, элементы которого равны порядку дифференцирования по соответствующей переменной. Γ : множество, на котором происходит аппроксимация либо решение краевой задачи. 𝑒 : локальная ошибка/невязка (вклад в минимизируемую величину от некоторой точ- ки). 𝐸 = ∑︀ 𝑀 𝑎=1 𝑒 𝑎 : глобальная ошибка/невязка (минимизируемая величина). 𝜖 = √︀𝐸/𝑀 : среднеквадратичная ошибка/невязка. 𝜗 : среднеквадратичное отклонение численного решения от точного. 𝜗 max : максимальное отклонение численного решения от точного. 𝜗 median : медианное отклонение численного решения от точного. 111 𝑟 : коэффициент переобучения – отношение среднеквадратичных ошибок на трениро- вочном и тестовом множествах. 𝑅 : коэффициент переобучения – отношение максимальных ошибок на тренировочном и тестовом множествах. 𝑇 : число итераций обучения 𝜆 : шаг сетки. 𝜙 : угловой шаг сетки на границе области. 𝜏 : ошибка аппроксимации конечно-разностного шаблона. ϒ (⃗ 𝑥) : разница между точным решением и численным. h: количество нейронов в скрытых слоях. 112 Литература [1] Krizhevsky, A. Imagenet classification with deep convolutional neural networks / A. Krizhevsky, I. Sutskever, G.E. Hinton // Advances in neural information processing systems. — 2012. — Pp. 1097–1105. [2] Connectionist temporal classification: labelling unsegmented sequence data with recurrent neural networks / A. Graves, S. Fern´andez, F. Gomez, J. Schmidhuber // Proceedings of the 23rd international conference on Machine learning / ACM. — 2006. — Pp. 369–376. [3] Delving deep into rectifiers: Surpassing human-level performance on imagenet classification / K. He, X. Zhang, S. Ren, J. Sun // Proceedings of the IEEE international conference on computer vision. — 2015. — Pp. 1026– 1034. [4] Lossy image compression with compressive autoencoders / L. Theis, W. Shi, A. Cunningham, F. Husz´ar // arXiv preprint arXiv:1703.00395. — 2017. [5] Zhang, G.P. Neural networks for classification: a survey / G.P. Zhang // IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews). — 2000. — Vol. 30, no. 4. — Pp. 451–462. [6] Huang, G.B. Extreme learning machine: theory and applications / G.B. Huang, Q.Y. Zhu, C.K. Siew // Neurocomputing. — 2006. — Vol. 70, no. 1-3. — Pp. 489–501. [7] Husmeier, D. Random vector functional link (RVFL) networks / D. Husmeier // Neural Networks for Con- ditional Probability Estimation. — Springer, 1999. — Pp. 87–97. [8] Barron, A.R. Universal approximation bounds for superpositions of a sigmoidal function / A.R. Barron // IEEE Transactions on Information theory. — 1993. — Vol. 39, no. 3. — Pp. 930–945. [9] Barron, A.R. Approximation and estimation bounds for artificial neural networks / A.R. Barron // Machine Learning. — 1994. — Vol. 14, no. 1. — Pp. 115–133. [10] Mittal, S. A survey of techniques for optimizing deep learning on GPUs / S Mittal, S Vaishay // Journal of Systems Architecture. — 2019. — Vol. 99. — P. 101635. [11] Compute Solution for Tesla’s Full Self-Driving Computer / E. Talpes, D.D. Sarma, G. Venkataramanan et al. // IEEE Micro. — 2020. — Vol. 40, no. 2. — Pp. 25–35. [12] Deng, L. Machine learning paradigms for speech recognition: An overview / L. Deng, X. Li // IEEE Trans- actions on Audio, Speech, and Language Processing. — 2013. — Vol. 21, no. 5. — Pp. 1060–1089. [13] Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups / G. Hinton, L. Deng, D. Yu et al. // IEEE Signal processing magazine. — 2012. — Vol. 29, no. 6. — Pp. 82–97. [14] Feng, X. Speech feature denoising and dereverberation via deep autoencoders for noisy reverberant speech recognition / X. Feng, Y. Zhang, J. Glass // 2014 IEEE international conference on acoustics, speech and signal processing (ICASSP) / IEEE. — 2014. — Pp. 1759–1763. [15] Petridis, S. Deep complementary bottleneck features for visual speech recognition / S. Petridis, M. Pantic // 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) / IEEE. — 2016. — Pp. 2304–2308. [16] Aarts, L.P. Neural network method for solving partial differential equations / L.P. Aarts, P. Van Der Veer // Neural Processing Letters. — 2001. — Vol. 14, no. 3. — Pp. 261–271. [17] Tarkhov, D.A. Semi-empirical Neural Network Modeling and Digital Twins Development / D.A. Tarkhov, A.N. Vasilyev. — Academic Press, 2019. [18] Artificial neural network method for solving the Navier–Stokes equations / M. Baymani, S. Effati, H. Niaz- mand, A. Kerayechian // Neural Computing and Applications. — 2015. — Vol. 26, no. 4. — Pp. 765–773. 113 [19] Beidokhti, R.S. Solving initial-boundary value problems for systems of partial differential equations using neural networks and optimization techniques / R.S. Beidokhti, A. Malek // Journal of the Franklin Institute. — 2009. — Vol. 346, no. 9. — Pp. 898–913. [20] Berg, J. A unified deep artificial neural network approach to partial differential equations in complex geome- tries / J. Berg, K. Nystr¨om // Neurocomputing. — 2018. — Vol. 317. — Pp. 28–41. [21] He, S. Multilayer neural networks for solving a class of partial differential equations / S. He, K. Reif, R. Un- behauen // Neural networks. — 2000. — Vol. 13, no. 3. — Pp. 385–396. [22] Kumar, M. Multilayer perceptrons and radial basis function neural network methods for the solution of differential equations: a survey / M. Kumar, N. Yadav // Computers & Mathematics with Applications. — 2011. — Vol. 62, no. 10. — Pp. 3796–3811. [23] Lagaris, I.E. Artificial neural networks for solving ordinary and partial differential equations / I.E. Lagaris, A. Likas, D.I. Fotiadis // IEEE Transactions on Neural Networks. — 1998. — Vol. 9, no. 5. — Pp. 987–1000. [24] Malek, A. Numerical solution for high order differential equations using a hybrid neural network optimization method / A. Malek, R.S. Beidokhti // Applied Mathematics and Computation. — 2006. — Vol. 183, no. 1. — Pp. 260–271. [25] Mall, S. Single layer Chebyshev neural network model for solving elliptic partial differential equations / S. Mall, S. Chakraverty // Neural Processing Letters. — 2017. — Vol. 45, no. 3. — Pp. 825–840. [26] Raissi, M. Physics-informed neural networks: A deep learning framework for solving forward and inverse problems involving nonlinear partial differential equations / M. Raissi, P. Perdikaris, G.E. Karniadakis // Journal of Computational Physics. — 2019. — Vol. 378. — Pp. 686–707. http://dx.doi.org/10.1.1/jpb001. [27] Rudd, K. A constrained backpropagation approach for the adaptive solution of partial differential equations / K. Rudd, G. Di Muro, S. Ferrari // IEEE transactions on neural networks and learning systems. — 2014. — Vol. 25, no. 3. — Pp. 571–584. |