Quando você estuda um assunto abstrato como álgebra linear, pode se perguntar: por que você precisa de todos esses vetores e matrizes? Como você aplicará todas essas inversões, transposições, vetor próprio e valores próprios para fins práticos?
Bem, se você estuda álgebra linear com o objetivo de fazer aprendizado de máquina, esta é a resposta para você.
Em resumo, você pode usar álgebra linear para aprendizado de máquina em 3 níveis diferentes:
- aplicação de um modelo aos dados;
- treinando o modelo;
- entender como funciona ou por que não funciona.

Suponho que você, leitor, tenha pelo menos uma vaga idéia de conceitos de álgebra linear (como vetores, matrizes, seus produtos, matrizes inversas, vetores próprios e valores próprios) e problemas de aprendizado de máquina (como regressão, classificação e redução de dimensionalidade) . Caso contrário, talvez agora seja uma boa hora para ler sobre eles na Wikipedia ou até mesmo se inscrever para um MOOC sobre esses assuntos.
Aplicação
O que o aprendizado de máquina geralmente faz é encaixar alguma função onde são os dados de entrada, é uma representação útil desses dados e são parâmetros adicionais, dos quais nossa função depende e que precisam ser aprendidos. Quando temos essa representação , podemos usá-lo, por exemplo, para reconstruir os dados originais (como na aprendizagem não supervisionada) ou para prever algum valor de interesse, (como na aprendizagem supervisionada).
Todos , , e geralmente são matrizes numéricas e podem ser pelo menos armazenadas como vetores e matrizes. Mas o armazenamento por si só não é importante. O importante é que nossa função geralmente é linear, ou seja, . Exemplos de tais algoritmos lineares são:
- regressão linear, onde . É uma linha de base sensata para problemas de regressão e uma ferramenta popular para responder perguntas como "faz afetar , outras coisas são iguais? "
- regressão logística, onde . É uma boa linha de base para problemas de classificação e, às vezes, é difícil de superar.
- análise de componentes principais, onde é apenas uma representação de baixa dimensão de alta dimensão , a partir do qual pode ser restaurado com alta precisão. Você pode pensar nisso como um algoritmo de compactação.
- Outros algoritmos do tipo PCA (decomposição de matrizes) são amplamente usados em sistemas de recomendação, para transformar uma matriz muito esparsa de "quais produtos foram comprados por quais usuários" em representações compactas e densas de usuários e produtos, que podem ser mais utilizadas para prever novas transações.
Outros algoritmos, como a rede neural, aprendem transformações não lineares, mas ainda dependem muito de operações lineares (isto é, multiplicação matriz-matriz ou multiplicação vetor-matriz). Uma rede neural simples pode parecer - usa duas multiplicações de matriz e uma transformação não linear entre eles.
Treinamento
Para treinar um algoritmo, você geralmente define uma função de perda e tenta otimizá-la. Às vezes, a perda em si é conveniente para escrever em termos de álgebra linear. Por exemplo, a perda quadrática (usada no método dos mínimos quadrados) pode ser escrita como um produto escalar onde é o vetor de sua previsão e é a verdade básica que você tenta prever. Essa representação é útil, pois nos permite derivar maneiras de minimizar essa perda. Por exemplo, se você usar regressão linear com esse método de mínimos quadrados, sua solução ideal será semelhante . Muitas operações lineares em um só lugar!
Outro exemplo de solução linear é o PCA, onde os parâmetros de interesse são os primeiros autovetores da matriz , correspondendo aos maiores valores próprios.
Se você treina redes neurais, normalmente não há solução analítica para os parâmetros ideais e é necessário usar a descida gradiente. Para fazer isso, você precisa diferenciar a perda pelos parâmetros e, ao fazê-lo, novamente é necessário multiplicar matrizes, porque se (uma função composta), então , e todos esses derivados são matrizes ou vetores, porque e são multidimensionais.
A descida simples do gradiente está OK, mas é lenta. Você pode acelerar, aplicando métodos de otimização newtonianos. O método básico é onde e são são o vetor das primeiras derivadas e a matriz das segundas derivadas da sua perda escreve os parâmetros . Mas pode ser instável e / ou computacionalmente caro, e talvez seja necessário apresentar suas aproximações (como L-BFGS) que usam álgebra linear ainda mais envolvida para otimização rápida e barata.
Análise
Você vê que a álgebra linear ajuda a aplicar e treinar seus modelos. Mas a ciência real (ou mágica) começa quando seu modelo se recusa a treinar ou prever bem. O aprendizado pode ficar parado em um ponto ruim ou de repente ficar louco. No aprendizado profundo, isso geralmente ocorre devido a gradientes que desaparecem ou explodem. Ou seja, quando você calcula o gradiente, multiplica muitas matrizes e depois coisas estranhas acontecem e você precisa saber o que, por que e como superá-lo. Uma das maneiras de inspecionar o que está acontecendo é acompanhar os valores próprios das matrizes que você está tentando inverter. Se eles estão próximos de 0, ou apenas muito diferentes, a inversão dessa matriz pode levar a resultados instáveis. Se você multiplicar muitas matrizes por grandes valores próprios, o produto explode. Quando esses autovalores são pequenos, o resultado diminui para zero.
Diferentes técnicas, como regularização de L1 / L2, normalização de lotes e LSTM foram inventadas para combater esses problemas com convergência. Se você deseja aplicar qualquer uma dessas técnicas, precisa de uma maneira de medir se elas ajudam muito no seu problema específico. E se você quiser inventar essa técnica, precisará de uma maneira de provar que ela pode funcionar. Isso envolve novamente muita manipulação com vetores, matrizes, suas decomposições etc.
Conclusão
Você pode ver que quanto mais você mergulha no aprendizado de máquina, mais álgebra linear você vê lá. Para aplicar modelos pré-treinados, você deve pelo menos converter seus dados em um formato compatível com álgebra linear (por exemplo, numpy.array
em Python). Se você precisar implementar um algoritmo de treinamento, ou mesmo inventar um novo, esteja preparado para multiplicar, inverter e decompor muitas matrizes.
Neste texto, referenciei alguns conceitos com os quais você pode não estar familiarizado. Está tudo bem. O que este artigo o incentiva é procurar palavras desconhecidas e ampliar seus horizontes.
A propósito, seria interessante ouvir algumas histórias suas nos comentários, sobre como você encontrou aplicações de álgebra linear em seu próprio trabalho ou estudo.
PS Em um dos meus artigos , argumentei que você não precisa aprender matemática para ter sucesso (ainda é um estereótipo popular na Rússia), mesmo se você trabalha com TI. No entanto, eu nunca disse que a matemática é inútil (caso contrário, eu não estaria ensinando isso o tempo todo). Normalmente, não é a chave para o sucesso, mas em muitos casos, ajuda, e em alguns (como o desenvolvimento de modelos de aprendizado profundo), é essencial.
PPS Por que em inglês ?! Bem, só porque eu posso. A pergunta original foi feita neste idioma e em inglês eu respondi. E então ele decidiu que a resposta poderia ser levada ao nível de um pequeno artigo público.
Por que então Habr, e não, por exemplo, Médio? Em primeiro lugar, diferentemente do Medium, as fórmulas normalmente são suportadas aqui. Em segundo lugar, o próprio Habr entraria nos mercados internacionais; então, por que não tentar colocar um conteúdo em inglês aqui?
Vamos ver o que acontece.