Saludos lector. Cuando era niño y estudiaba en la escuela, mi materia favorita eran las matemáticas, mi materia favorita era por el hecho de que me gusta mucho resolver problemas, en algún momento de mi vida comencé a componerme problemas obviamente irresolubles y los probé. Para resolver, esforzando por completo la mente al pensar en un enfoque para resolver un problema irresoluble, a veces resultaba que un problema insoluble sólo parecía serlo debido a la omisión de algunos momentos no obvios. Mi amor por la resolución de problemas me influyó mucho, por eso resuelvo constantemente cualquier problema en mi cabeza, no solo matemático, sino también de otras áreas. A lo largo de mi vida, he acumulado muchas ideas (soluciones), desde una impresora 3D de acero hasta un método para resolver el problema de la eliminación de desechos radiactivos de las centrales nucleares.Seguramente muchas ideas no son realmente realizables, por una razón u otra, y algunas probablemente fueron inventadas antes que yo, y yo simplemente no las conocía (esto ya sucedió). En mi ultimoEn el artículo mencioné (yo mismo no sé por qué) que se me ocurrió un nuevo tipo de números con los que se pueden entrenar redes neuronales. Quería abrir un servicio para entrenar redes neuronales usando estos números, pero dada la pandemia y mi mala salud, pensé que de repente yo era realmente el primero en pensar en estos números y sería extremadamente malo si muero y el conocimiento sobre estos números desaparece. yo. Por eso, decidí escribir este artículo, en el que hablaré en detalle sobre estos números y cómo usarlos para entrenar redes neuronales. Debo decir de inmediato que no encontré todas las fórmulas necesarias para trabajar con tales números, ya que estaba ocupado con mi propio lenguaje de programación, esto es solo una idea, no una implementación lista para usar.
Para comprender completamente lo que se discutirá en el artículo, debe tener conocimiento sobre la estructura de las redes neuronales de alimentación directa simples.
Suponga que necesita entrenar una red neuronal de avance con algún tipo de conjunto de entrenamiento, en el que hay ejemplos de lo que se alimenta a la entrada de la red neuronal y lo que se espera que se reciba en la salida. Para tal caso, puede escribir una función, llamémosla aptitud (como en un algoritmo genético), una red neuronal y una muestra de entrenamiento se dan como entrada para dicha función, y la función devuelve un número de 0 a 1, el número corresponde a cuánto se entrena la red neuronal dada por esta muestra, donde 0 no se entrena tanto como sea posible, 1 está idealmente entrenado. Usando una función de aptitud de este tipo, la red neuronal se puede representar como una función matemática en la que los argumentos son los pesos de la red neuronal y el resultado es el resultado de la función de aptitud aplicada a la red neuronal con los pesos y la muestra de entrenamiento dados. Empecé a pensar "¿cómo encontrar el máximo de dicha función?"En mi cabeza, presenté un gráfico tridimensional de una función con 2 argumentos y pensé que si agregamos la condición de que cada peso se limitará a un rango finito de valores posibles, entonces este gráfico se puede dividir en dos partes, en una parte del gráfico el primer argumento tiene los mismos valores de su rango posible, y la segunda parte del gráfico tiene todos los valores restantes del argumento, luego analiza en qué parte el máximo es mayor, toma esta parte y divídela de la misma manera, pero ya apoyándote en otro argumento, luego de lo cual se necesita nuevamente la parte obtenida como resultado de la segunda división dividido en dos según el primer argumento. Dicha división en partes debe realizarse hasta que los valores del resultado de la función en el área obtenida de la división tengan fluctuaciones demasiado grandes.Cualquier argumento de la parte resultante del gráfico son ponderaciones apropiadas. Para una mejor comprensión, explicaré lo anterior con un ejemplo.
y(x) = sin x, x [-4, 4], , , . 2 , x [-4, 0], x [0, 4], , [0, 2] [2, 4]. - , 1, [pi * 999999 / 2000000, pi / 2], x . . - , , , . [0, 1], , . "". , , , , . : sin([-pi, pi]) = [-1, 1]. , , , , . : [-3, 6] - [-12, 7] = [-10, 18]. , [3, 3]. ? , , , , . feedforward :
- ,
fintess
2 , , . , fitness . fitness ,
,
. , . , , - fitness , , , , - . , , , , .
, , , . , . : [1, 2] [4, 5], , [5, 7], 5 1 4, 6 , 6 , 5. , . , , 0, . , [a, b] x , n , x , . f ( 0 1) , x. f f1, f1(x) = f(x) * n. n , f1 , , x . f1 0, , , , , . , f1. , f1 , , youtube (, ), , , - . ( x) , [0, 1], , , .
fitness , . , , , . , , , , , . , , ? ? , , , , . :
- , y(x) = 1
fintess
2 , , . , fitness . fitness ,
,
,
2 , , . , fitness . fitness ,
,
4
5- , 5
, (: 3 ([0, 1], [20, 40], [100, 101]) ), , , 1 2- . , . [1, 2, y(x) = 1], [4, 5, y(x) = 1], [5, 7, y(x) = 1 - |0.5 - x| * 2]. y(x) = 1 - |0.5 - x| * 2? , , , . y(x) = x, , 2 . , , 2- , , . , , , .. [a1, b1, y1(x) = f1(x)] + [a2, b2, y2(x) = f2(x)] = [a3, b3, y3(x) = f3(x)], f3 a1, b1, a2, b2, f1 f2, , . , , .
P. S. , . , . , , . , 80%. , , ( , , ). ( ), - ( ), , . , () , - , , . , , . 200 , . , ( ""). .