Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
tensorflow
GitHub Repository: tensorflow/docs-l10n
Path: blob/master/site/pt-br/lattice/overview.md
25115 views

TensorFlow Lattice (TFL)

O TensorFlow Lattice é uma biblioteca que implementa modelos baseados em lattice flexíveis, controlados e interpretáveis. A biblioteca permite que você injete conhecimento de domínio no processo de aprendizado pelas restrições de formato de senso comum ou baseadas na política. Isso é realizado usando uma coleção de camadas do Keras que podem satisfazer restrições como monotonicidade, convexidade e confiança em pares. A biblioteca também fornece estimadores predefinidos fáceis de configurar.

Conceitos

Esta seção é uma versão simplificada da descrição em Monotonic Calibrated Interpolated Look-Up Tables (Tabelas de consulta interpoladas e calibradas monotônicas), JMLR 2016.

Lattices

Um lattice é uma tabela de consulta que consegue aproximar relações arbitrárias de entrada-saída nos seus dados. Ele sobrepõe uma grade regular no seu espaço de entrada e aprende valores para a saída nos vértices da grade. Para um ponto de teste xx, f(x)f(x) é interpolado de maneira linear a partir dos valores lattice em volta de xx.

O exemplo simples acima é uma função com 2 características de entrada e 4 parâmetros: θ=[0,0.2,0.4,1]\theta=[0, 0.2, 0.4, 1], que são os valores da função nos cantos do espaço de entrada. O resto da função é interpolada a partir desses parâmetros.

A função f(x)f(x) consegue capturar interações não lineares entre as características. Você pode pensar nos parâmetros lattice como a altura de postes colocados no chão de uma grade regular, e a função resultante é como um tecido puxado com força entre os quatro postes.

Com as características DD e os 2 vértices ao longo de cada dimensão, um lattice regular terá 2D2^D parâmetros. Para se adaptar a uma função mais flexível, você pode especificar um lattice mais refinado no espaço da característica com mais vértices ao longo de cada dimensão. As funções de regressão lattice são contínuas e têm partes infinitamente diferenciáveis.

Calibração

Digamos que o lattice de amostra anterior representa a satisfação do usuário aprendida com uma recomendação de café local calculada usando características:

  • preço do café, de 0 a 20 dólares

  • distância do usuário, de 0 a 30 quilômetros

Queremos que nosso modelo aprenda a satisfação do usuário com uma recomendação de café local. Os modelos do TensorFlow Lattice podem usar funções lineares por partes (com tfl.layers.PWLCalibration) para calibrar e normalizar as características de entrada para o intervalo aceito pelo lattice: 0.0 a 1.0 no lattice de exemplo acima. O seguinte mostra exemplos, como funções de calibração com 10 keypoints:

Geralmente, é uma boa ideia usar os quantis das características como keypoints de entrada. Os estimadores predefinidos do TensorFlow Lattice podem configurar automaticamente os keypoints de entrada para os quantis de características.

Para as características categóricas, o TensorFlow Lattice fornece calibração categórica (com tfl.layers.CategoricalCalibration) com delimitação de saída semelhante para alimentar o lattice.

Ensembles

O número de parâmetros de uma camada de lattice aumenta exponencialmente com o número de características de entrada. Portanto, não é bem escalado para dimensões muito altas. O TensorFlow Lattice oferece ensembles de lattices que combinam vários pequenos lattices (regulares), o que permite ao modelo crescer linearmente no número de características.

A biblioteca oferece duas variações destes ensembles:

  • Pequenos Lattices Aleatórios (RTL): cada submodelo usa um subconjunto aleatório de características (com substituição).

  • Crystals : o algoritmo Crystals primeiro treina um modelo de prefitting que estima interações de características em pares. Em seguida, ele organiza o ensemble final para que as características com mais interações não lineares estejam nos mesmos lattices.

Por que o TensorFlow Lattice?

Confira uma breve introdução ao TensorFlow Lattice nesta postagem de blog do TF.

Interpretabilidade

Como os parâmetros de cada camada são a saída dessa camada, é fácil analisar, entender e depurar cada parte do modelo.

Modelos exatos e flexíveis

Usando lattices mais granulares, você pode obter funções arbitrariamente complexas com uma única camada de lattice. O uso de várias camadas de calibradores e lattices geralmente funciona bem na prática e tem um desempenho igual ou superior aos modelos de DNN de tamanho semelhante.

Restrições de formato de senso comum

Os dados de treinamento do mundo real podem não representar suficientemente os dados do runtime. Soluções de ML flexíveis, como DNNs ou florestas, geralmente agem de maneira inesperada e até frenética nas partes do espaço de entrada não cobertas pelos dados de treinamento. Esse comportamento é especialmente problemático quando as restrições de política ou imparcialidade podem ser violadas.

Embora formas comuns de regularização possam resultar em extrapolação mais sensata, os regularizadores padrão não podem garantir um comportamento de modelo razoável em todo o espaço de entrada, especialmente com entradas de muitas dimensões. Trocar para modelos mais simples com um comportamento mais controlado e previsível pode custar bastante para a exatidão do modelo.

O TF Lattice possibilita continuar usando modelos flexíveis, mas fornece várias opções para injetar conhecimento de domínio no processo de aprendizado por restrições de formato de senso comum ou baseadas na política semanticamente significativas:

  • Monotonicidade: você pode especificar que a saída só deve aumentar/diminuir em relação a uma entrada. Em nosso exemplo, você deve especificar que uma maior distância até um café só deve diminuir a preferência de usuário prevista.

  • Convexidade/concavidade: você pode especificar que o formato da função pode ser convexo ou côncavo. Combinado com a monotonicidade, isso pode forçar a função a representar retornos decrescentes em relação a uma determinada característica.

  • Unimodalidade: você pode especificar que a função deve ter um pico ou vale exclusivo. Isso permite que você represente funções que têm um ponto favorável em relação a uma característica.

  • Confiança em pares: essa restrição funciona em um par de características e sugere que uma característica de entrada reflete semanticamente a confiança em outra característica. Por exemplo, um maior número de avaliações deixa você mais confiante na classificação média de estrelas de um restaurante. O modelo será mais sensível em relação à classificação de estrelas (ou seja, terá um declive maior em relação à classificação) quando o número de avaliações for maior.

Flexibilidade controlada com regularizadores

Além das restrições de formato, o lattice do TensorFlow oferece um número de regularizadores para controlar a flexibilidade e a suavidade da função para cada camada.

  • Laplacian Regularizer: as saídas dos vértices/keypoints de lattice/calibração são regularizados em relação aos valores dos respectivos vizinhos. Isso resulta em uma função mais achatada.

  • Hessian Regularizer: penaliza a primeira derivada da camada de calibração de PWL para deixar a função mais linear.

  • Wrinkle Regularizer: penaliza a segunda derivada da camada de calibração de PWL para evitar mudanças inesperadas na curvatura. Deixa a função mais suave.

  • Torsion Regularizer: as saídas do lattice serão regularizadas para prevenir a torsão entre as características. Em outras palavras, o modelo será regularizado para a independência entre as contribuições das características.

Combine com outras camadas do Keras

Você pode usar as camadas do TF Lattice em combinação com outras camadas do Keras para construir modelos parcialmente restritos ou regularizados. Por exemplo, as camadas de calibração de lattice ou PWL podem ser usadas na última camada de redes mais profundas que incluem embeddings ou outras camadas do Keras.

Artigos

Tutoriais e documentação da API

Para arquiteturas de modelo comuns, você pode usar modelos pré-fabricados do Keras ou Estimadores predefinidos. Você também pode criar modelos personalizados usando camadas Keras do TF Lattice ou combinar com outras camadas do Keras. Confira a documentação completa da API para mais detalhes.