Extreme Learning Machine - ELM | Computação Inteligente
Hoje vamos apresentar uma Extreme Learning Machine (ELM, ou em português, máquina de aprendizado extremo), algoritmo proposto por Huang [1,2] e que nada mais é do que uma rede neural artificial (RNA) de apenas uma camada oculta. O princípio de funcionamento da ELM é o mesmo de uma RNA, todavia a metodologia de treinamento de uma ELM não é baseada em gradiente descendente. Com isso o algoritmo escapa das principais deficiências do backpropagation: convergência lenta e convergência para mínimos locais. Segundo [2] o treinamento de uma ELM pode ser milhares de vezes mais rápido do que o treinamento via backpropagation (e de fato é). Para ilustras a arquitetura de uma ELM, podemos utilizar a mesma figura do post de RNA, porém com k = 1, ou seja, temos apenas uma camada oculta. (Se você não se sente confortável com os termos utilizados até aqui, leia nosso post sobre RNA)
Fig 1: arquitetura de uma rede neural artificial. A ELM utiliza apenas uma camada oculta, portanto, k = 1
O vetor é a entrada da rede. Os pesos de conexão da camada de entrada são alocados em uma matriz denominada e já os da camada oculta em uma matriz denominada . Para facilitar e agilizar os cálculos, os bias dos neurônios da camada oculta também são alocados em na última linha de , e os bias da camada de saída não são utilizados na ELM. A modelagem matricial do ELM é descrita a seguir:
onde é o número de neurônios de entradas, é o número de neurônios na camada oculta e é o número de neurônios de saída da rede.
O treinamento da ELM é realizado de maneira analítica, diferentemente da abordagem iterativa do backpropagation. A matriz é gerada de maneira aleatória e não é alterada até o fim do algoritmo. Portanto, o objetivo do treinamento da ELM é encontrar a matriz de pesos , baseado na matriz de saída e na matriz de pesos aleatórios , por meio da resolução de um sistema linear. Para isso, o primeiro passo é determinar a matriz da seguinte maneira:
onde a função é a função de transferência (pode ser uma sigmoid, por exemplo) da camada e , sendo o número de amostras do conjunto de treinamento. Portanto, a matriz armazena o resultado de todos os neurônios da camada oculta obtidos a partir da multiplicação entre e . Uma vez determinada a matriz , para se obter os pesos da matriz deve ser solucionado o seguinte sistema linear:
onde é a inversa generalizada de Moore–Penrose [3] da matriz . Caso fosse utilizado a inversa padrão, o algoritmos seria limitado a problemas que essa inversa existisse. A inversa generalizada 'afrouxa' algumas exigências da inversa tradicional, como por exemplo, a matriz não precisa ser quadrada. Para mais informações, consulte [3]. (Para quem usa Python+Numpy e/ou MATLAB, é o comando pinv())
Bom, realizado os passos acima a rede está treinada e pode ser executada. Observe, que devido ao fato do treinamento da ELM ser executado de forma analítica, o mesmo é realizado de maneira mais rápida do que um método iterativo [2]. Todavia a abordagem possui suas fraquezas. A primeira delas é relacionada a inicialização aleatória dos pesos da matriz . Pode ocorrer dos valores obtidos para desencadear, ao fim do processo, em uma matriz que proporcione um resultado final ruim. Por conta disso, existem trabalhos que visam otimizar a escolha dos valores de por meio de algoritmos evolutivos [4], por exemplo. Outra fraqueza é o fato do algoritmo trabalhar com a inversa generalizada da matriz . Caso a rede possua muitas amostras e muitos neurônios na camada oculta, obter a inversa generalizada de pode demandar bastante recurso computacional. Por fim, a rede realmente obtem bons resultados e pode ser milhares de vezes mais rápida do que uma rede neural tradicional. Você pode testar por conta própria utilizando o código disponibilizado na sequência, tanto em Python quanto em MATLAB.
Código ELM em python
Código ELM em MATLAB
Faça bom uso e até a próxima.
[1] Huang, G.-B.; Zhu, Q.-Y.; Siew, C.-K. Extreme learning machine: a new learning scheme of feedforward neural networks. IEEE International Joint Conference on Neural Networks, v. 2, p. 985–990, 2004.
[2] Huang, G.-B.; Zhu, Q.-Y.; Siew, C.-K. Extreme learning machine: theory and applications. Neurocomputing, v. 70, n. 1, p. 489–501, 2006.
[3] Serre, D. Matrices: theory and applications. New York: Springer, 2002.
[4] Han, F.; Yao, H.-F.; Ling, Q.-H. An improved evolutionary extreme learning machine based on particle swarm optimization. Neurocomputing, v. 116, p. 87–93, 2013.