Este curso está focado na questão: Como fazemos cálculos matriciais com velocidade e precisão aceitáveis?
Este curso foi ministrado no programa Masters of Science in Analytics da Universidade de São Francisco, verão de 2017 (para estudantes de pós-graduação que estudam para se tornarem cientistas de dados). O curso é ministrado em Python com Jupyter Notebooks, usando bibliotecas como Scikit-Learn e Numpy para a maioria das aulas, bem como Numba (uma biblioteca que compila Python em C para desempenho mais rápido) e PyTorch (uma alternativa ao Numpy para GPU) em algumas aulas.
Acompanha os cadernos uma playlist com vídeos de palestras, disponíveis no YouTube. Se você ficar confuso com uma palestra ou se ela passar muito rápido, confira o início do próximo vídeo, onde reviso conceitos da palestra anterior, muitas vezes explicando as coisas de uma nova perspectiva ou com ilustrações diferentes, e respondo perguntas.
Você pode fazer perguntas ou compartilhar suas idéias e recursos usando a categoria Álgebra Linear Computacional em nossos fóruns de discussão fast.ai.
A listagem a seguir está vinculada aos notebooks neste repositório, renderizados por meio do serviço nbviewer. Tópicos abordados:
Começamos com uma visão geral de alto nível de alguns conceitos fundamentais da álgebra linear numérica.
Usaremos o conjunto de dados de grupos de notícias para tentar identificar os tópicos de diferentes postagens. Utilizamos uma matriz termo-documento que representa a frequência do vocabulário nos documentos. Fatoramos isso usando NMF e depois com SVD.
Outra aplicação do SVD é identificar pessoas e remover o fundo de um vídeo de vigilância. Abordaremos o PCA robusto, que usa SVD randomizado. E o SVD randomizado usa a fatoração LU.
A detecção compactada é fundamental para permitir tomografias computadorizadas com menor radiação – a imagem pode ser reconstruída com menos dados. Aqui aprenderemos a técnica e a aplicaremos às imagens de tomografia computadorizada.
Aplicamos SVD à modelagem de tópicos, remoção de fundo e regressão linear. SVD está intimamente ligado à decomposição própria, então aprenderemos agora como calcular valores próprios para uma matriz grande. Usaremos dados da DBpedia, um grande conjunto de dados de links da Wikipédia, porque aqui o autovetor principal dá a importância relativa das diferentes páginas da Wikipédia (esta é a ideia básica do algoritmo PageRank do Google). Veremos 3 métodos diferentes para calcular autovetores, de complexidade crescente (e utilidade crescente!).
Este curso está estruturado com um método de ensino de cima para baixo , diferente do funcionamento da maioria dos cursos de matemática. Normalmente, em uma abordagem de baixo para cima , você primeiro aprende todos os componentes separados que usará e, então, gradualmente os transforma em estruturas mais complexas. O problema é que os alunos muitas vezes perdem a motivação, não têm uma noção do “quadro geral” e não sabem do que vão precisar.
O professor de Harvard, David Perkins, tem um livro, Making Learning Whole, no qual usa o beisebol como analogia. Não exigimos que as crianças memorizem todas as regras do beisebol e entendam todos os detalhes técnicos antes de deixá-las jogar. Em vez disso, eles começam a jogar com uma noção geral e gradualmente aprendem mais regras/detalhes com o passar do tempo.
Se você fez o curso de aprendizado profundo fast.ai, foi isso que usamos. Você pode ouvir mais sobre minha filosofia de ensino nesta postagem do blog ou nesta palestra que dei no encontro de aprendizado de máquina em São Francisco.
Tudo isso para dizer, não se preocupe se não entender tudo de primeira! Você não deveria. Começaremos usando algumas “caixas pretas” ou decomposições de matrizes que ainda não foram explicadas e, posteriormente, nos aprofundaremos nos detalhes de nível inferior.
Para começar, concentre-se no que as coisas FAZEM, não no que SÃO.