Racismo Algoritmico: Anexo A
Na edição anterior da newsletter falei sobre como algoritmos são racistas tendo como base o sistemático apagamento de pessoas não-brancas. O processo que torna os datasets tendenciosos nesse sentido se dá principalmente por privilegiar fenótipos no dataset de treinamento, ou seja, enquanto para algumas características o treinamento é feito de forma exaustiva atingindo margens confiáveis, por outro lado, com imagens de pessoas com outras características, o treinamento é insuficiente. E para concluir a desigualdade no treinamento, o resultado quando é medido apenas pelo conjunto, termina de apagar essas diferenças no treinamento, dando um número ou percentual que representa o todo como se a qualidade do resultado fosse a mesma para todos os dados de entrada. Uma dessas piadas críticas com amplo fundo de verdade diz “se você tem um dataset formado 90% por pessoas brancas e 10% de pessoas não-brancas, um acerto de 90% não garante que acertou alguém não-branco”.
Nessa primeira parte de avaliações e considerações sobre algoritmos tratarei apenas de analisar as respostas do DeepFace, daqui a algumas semanas publicarei uma análise sobre o algoritmo em relação ao seu funcionamento, o que vai exigir mais explicações técnicas acerca de métodos como o softmax e a convolução e discutir um pouco acerca de métricas de treinamento.
Mas antes de começar, preciso dizer algo que precisava ser dito antes: um algoritmo identificar corretamente uma etnia, um sentimento que está sendo expresso, o gênero, etc. nada disso é importante por si mesmo já que na perspectiva do algoritmo, não importa o que está sendo classificado, o trabalho é o mesmo de lidar com padrões em dados. Mas ter datasets com essas características e outras mais anotadas tem sua relevância para avaliar algoritmos que lidam com imagens de pessoas. É assim que funcionam os testes em algoritmos “caixa-preta”, com dados que nos permitam avaliar se a qualidade da resposta é diferente dependendo de fenótipos, iluminação, resolução da imagem, adereços, cabelo, expressão facial, posição da câmera, posição do rosto, etc. É dessa forma que podemos criar um “mapa” que indica se o algoritmo está adequado ou não ao uso que se propõe. É justamente uma simulação de testes assim que pretendo fazer aqui.
Explicando termos e alguns detalhes
Eu tinha pensado em deixar essa parte mais para o final mas relendo agora, me parece importante definir algumas coisas de antemão. Há um caos relacionado aos termos usados tanto pelo dataset quanto pela saída do algoritmo, esse estado problemático e caótico se dá justamente pela falta de definições claras e talvez excesso de definições implícitas. trocando em miúdos, o dataset ter escolhido para “gênero” as letras f
e m
para female e male e o deepface ter escolhido man
e woman
tem muitas chances de indicar sentidos diferentes. Falo isso porque eu estava tratando como sinônimos (e logo mais abaixo poderão ver os testes) mas algo aparentemente incorreto me fez pensar melhor.
Eram fotos de um homem negro de dreads e que foi marcado com f
no VGG Face2, era bem nítido que se tratava de um homem, então só faria sentido marcar assim se pensassem em características femininas e imaginassem que dreads e cabelo comprido teria esse sentido, o que é algo bem subjetivo e um tanto quanto sem noção. Mas acabei me adiantando, eu deveria ter começado falando logo o quão problemáticas são essas definições todas, afinal identidade de gênero não é o mesmo que ter elementos visuais sobre si que comportam símbolos lidos como masculinos ou femininos. Falar de estética é também falar de comunicação e isso ultrapassa os limites de questões relacionadas apenas a gênero, temos sua cultura, suas ideologias, seus mais diferentes ideais, enfim, temos muito do que você diz sobre si e sua própria história. E aí temos o algoritmo, que lê uma foto de uns 200 pixels de cada lado e através da matriz de números inteiros que constitui aquela foto, define a pessoa apenas como “homem” ou “mulher” ou como “feminino” e “masculino”.
O algoritmo é imensamente limitado, mas por trás dele temos aquela costumeira prepotência e mistificação sobre a tecnologia que finge não ver as limitações e atribui super poderes místicos. Falo dessa forma porque é a real sensação que tenho ao analisar dados para avaliar redes neurais, por exemplo. Talvez isso fique ainda mais evidente com a questão da “raça”, que foi o tema da edição anterior da newsletter, mas temos aqui no VMER “causasian latin” e no deepface “latino hispanic”, entendo que a intenção do VMER é aglutinar o que não faz sentido separar mas a região do cáucaso fica entre a Georgia, Armênia, Azerbaijão e um pedaço da Rússia, só que entendemos que ao falar em pessoas “caucasianas” estamos falando de pessoas brancas e não de pessoas dessa parte do planeta, ou seja, removemos o contexto étnico e geográfico. E quanto a “latino” ou o “latino hispânico” temos o exato oposto, há um contexto geográfico e étnico enquanto não há diferenças considerando características fenotípicas. Só para finalizar o assunto “latino”, imagino que grande parte das pessoas se lembram de uma matéria de uma revista norte-americana que disse “A argentina Taylor Joy é a primeira mulher de cor a vencer esta categoria desde Queen Latifah em 2008 e apenas a quinta mulher de cor a vencer desde 1982”.
Este é um processo bem frequente que dita a discriminação racial, não é muito diferente do contexto do surgimento da palavra “morena”, usada para inferiorizar pessoas não-brancas na península ibérica após a retomada da região pelos cristãos, sendo que a nova nobreza instaurada era de ascendência germânica, portanto, com a pele mais clara. Essa subjetividade inerente à classificação de pessoas através de estereótipos de “raça”, este instrumento de discriminação, é completamente incompatível com a objetividade esperada de qualquer algoritmo mas que acaba servindo de validação num ciclo de escolhas tendenciosas, estruturando a criação e o uso do algoritmo pelo racismo.
Não sei dizer se a sensação de retrocesso ou de anacronismo é realmente sobre retrocesso e anacronismo, o fato é que pensar em algoritmos dessa forma me lembra muito os trabalhos da antropometria no século XIX, que tinham seus dois pés na eugenia, inclusive com participação direta de Francis Galton como na famosa… (dá para chamar de pesquisa?) no famoso trabalho pseudocientífico que relacionou fotografias de rosto à criminalidade. Na época o evolucionismo social era muito popular e se buscava provar que diferentes povos estavam em diferentes estágios evolutivos, com a perspectiva da “evolução” como uma linha reta onde no fim estava a pessoa branca nascida na europa junto com todos os demais elementos das elites políticas e econômicas da época, e para isso era comum usar métricas para encaixar tudo na teoria deles. Um filme que tem uma cena que ilustra bem isso é Django Livre, quando um escravocrata cerra uma parte de um crânio que ele afirma ser de um homem negro para um argumento sem pé nem cabeça sobre pessoas brancas serem superiores.
Obviamente a escala e a direção são outras, mas o fato de partir de uma visão de mundo racista, no sentido de ter uma leitura da realidade à base dessa amálgama de elitismo que mistura cor de pele, classe, etnia e espaço geográfico para reforçar diferenças que não existem de fato, existem só na cabeça do racista que se esforça em transforma-la em fato social, e usam o algoritmo como uma forma de validação do mesmo jeito que eugenistas inventavam métricas para provar os absurdos que acreditavam. E sim, estou comparando a ciência da computação com pseudociência. Não podemos perder de vista que ciência se faz com método e não com achismos, e as pesquisas em IA muito frequentemente se resumem a propor alguma modificação em algum algoritmo e comparar métricas como percentuais de acerto com outras implementações mais conhecidas, e para isso se usam datasets tidos como “padrão ouro”, falarei bem melhor disso na próxima edição da newsletter, mas por enquanto só ressalto o caráter empirista da coisa, como se tem uma cultura em pesquisa na área voltada para se provar pelos resultados através de métricas muitas vezes arbritrária e não através de um estudo crítico e analítico, o que acaba abrindo muito espaço para se tornar uma ferramenta pseudocientífica.
Antes de prosseguir, só uma observação: A falta de definições me gera um imenso desconforto, e espero que entendam que sempre que eu falar em “etnia” ou “etnicidade” é uma referência ao que está marcado no dataset VMER/VGG Face2, “raça” e “raça dominante” (uma péssima terminologia) é exclusivamente sobre a o resultado do deepface, o mesmo vale para “gênero”, e nesse caso será tanto sobre o VMER/VGG face2 quanto para o deepface, ambos usam o mesmo termo, de forma igualmente binária mas o deepface se refere a homens e mulheres enquanto o VMER/VGG Face2 se refere a feminino e masculino. Estes termos não tratam da realidade, usarei eles apenas porque são os termos usados pelos materiais que tenho disponíveis para este breve estudo e seu contexto é inteiramente restrito ao dataset e à saída do algoritmo.
Os Dados
Voltando à análise, o ideal seria termos um dataset com bastante diversidade em relação a pessoas representadas, então teríamos muitas mulhres com hijab, pessoas das mais diferentes tonalidades de pele e formato de olhos, diferentes estilos e cores de cabelo, homens e mulheres de cabelo longo e de cabeça raspada, e se fosse algum dataset envolvendo pessoas de corpo inteiro e considerando a paisagem, teríamos tanto pessoas de kimono turistando em Kyoto quanto pessoas sem camisa e de bermuda correndo na praia no final da tarde. Ineflizmente não estamos no mundo ideal, pouquíssimos datasets sequer levam em consideração a cor da pele ou outros fenótipos (a qual normalmente chamam de etnia ou raça como se quisessem dizer a mesma coisa), de modo que as opções são muito limitadas entre datasets acadêmicos, que são mais fáceis de pessoas comuns baixar e treinar algoritmos que até mesmo ficarão disponíveis publicamente através do github.
VMER/VGG Face 2
Esclarecendo minha ausência de escolha, optei por usar o VGG Face2, que não foi feito para classificação de imagens com base em algum atributo, ele foi criado pensando em autenticação facial, e por isso essa estrutura:
[id]
├─img1
├─img2
├─img3
└─...
Onde o id identifica que naquela pasta tem fotos de alguém como o Pelé, o Dalai Lama, a Carolina Dieckman, a Sarah Jessica Parker, etc. Embora tenha sido pensando para um propósito, basta algum csv, xml ou até txt relacionando cada id ou imagem a alguma de suas características que se tem um dataset pronto para outro propósito. É exatamente o que o VMER é: um dataset criado sobre o VGG Face2 que indica num arquivo xml, a qual “etnia” a pessoa representada em cada id se enquadra, mas considerando as seguintes etnias:
0: African American
1: East Asian
2: Caucasian Latin
3: Asian Indian
Obs.: Há uma pequena diferença entre o xml e o README: como é possível ver acima, os índices na descrição começam em 0 mas no xml eles começam em 1.
O Vgg Face 2 já vem com uma separação entre dados de treinamento e de teste, e por haver menos probabilidade do DeepFace ter sido treinado com os dados separados para avalização ainda que eu realmente não saiba que dataset foi usado para treina-lo mas como mostrarei a seguir, certamente não foi o VMER, resolvi, só para ajudar na imparcialidade, usar apenas os dados de teste nesta avaliação, cuja distribuição é a seguinte:
| gender | African American | Asian Indian | Caucasian Latin | East Asian ||--------|------------------|--------------|-----------------|------------|| “f” | 3446 | 4728 | 46976 | 12269 || “m” | 7253 | 4276 | 83966 | 6482 |
Quase a metade das imagens no dataset de testes são de homens latino-caucasianos (49.57%), sendo que o total de imagens para esta ‘etnia’ corresponde a 76% de todas as imagens.
Mas isso ainda diz pouco, massificar assim faz parecer que todas as pessoas negras, brancas, mulheres e homens tem o rosto exatamente igual. É justamente para olhar mais de perto, ainda que “de cima”, que vale a pena compreender um pouco quantos rostos diferentes são representados nas imagens, ou seja, se de 100 imagens tivermos 40 ou 60 imagens de uma pessoa só e essa pessoa se encaixa perfeitamente nos padrões mais exaustivamente treinados pelo algoritmo, na categoria em questão teríamos um resultado falso acerca da qualidade da predição. Ao mesmo tempo nos é importante entender que condições do ambiente, como adereços, penteado e corte de cabelo, e até mesmo a qualidade das imagens ou resolução da câmera influenciam na resposta dada pelo algoritmo. Mas antes de falar de recortes do dataset para os testes, vamos olhar mais de perto os dados disponíveis.
Apesar das diferenças na quantidade de perfis por ‘etnia’, cada perfil tem pelo menos 100 imagens e a grande maioria tem acima de 200 imagens.
A imagem acima combina 2 tipos distintos de gráficos gerados a partir da contagem de imagens por cada pessoa representada no dataset: boxplot e violinplot. O primeiro, que é literalmente uma caixa, é o que agrega a maior quantidade de informações, nele temos, das partes mais externas para as mais internas, a indicação dos limites máximos e mínimos, só que desconsiderando os pontos muito fora do padrão. O espaço entre o teto e o piso da caixa e essa marcação de máximos e mínimos são chamados de quartis, ou seja, ¼ dos dados, e se há 25% dos dados acima dessa “caixa” e 25% abaixo, o espaço da “caixa” indica onde está 50% dos dados e dentro dessa caixa temos 2 linhas, uma lisa e outra pontilhada, a pontilhada é a média simples e a lisa é a mediana, que indica que se colocarmos em ordem os dados, pelo menos 50% é até aquele ponto, o que em nosso caso, significa a quantidade de fotos por perfil.
O boxplot ajuda a entender a distribuição dos dados, inclusive acerca do que está mais distante do padrão das demais, mas é um formato ainda bastante limitado, ainda que bem objetivo. Essa lacuna é fechada justamente pelo violinplot, que como o nome indica, tem normalmente um formato como o de um violino, onde as partes mais “gordas” do gráfico é justamente onde há maior concentração dos dados. Um pouco de paciência pois essas visualizações só terão sentido completo com a tabela abaixo:
statistic | [ f ] African American | [ m ] African American | [ f ] East Asian | [ m ] East Asian | [ f ] Caucasian Latin | [ m ] Caucasian Latin | [ f ] Asian Indian | [ m ] Asian Indian |
---|---|---|---|---|---|---|---|---|
“min” | 202.0 | 141.0 | 113.0 | 98.0 | 123.0 | 99.0 | 199.0 | 191.0 |
“max” | 530.0 | 584.0 | 520.0 | 469.0 | 617.0 | 644.0 | 761.0 | 488.0 |
“mean” | 382.888889 | 290.12 | 306.725 | 294.636364 | 335.542857 | 349.858333 | 394.0 | 356.333333 |
“std” | 94.697472 | 103.32607 | 111.336171 | 112.153613 | 106.969193 | 116.826538 | 179.293056 | 102.751539 |
“count” | 9.0 | 25.0 | 40.0 | 22.0 | 140.0 | 240.0 | 12.0 | 12.0 |
Agora finalmente uma explicação entre muitas análises possíveis: só há imagens de 9 perfis de mulheres negras, e a grande maioria desses perfis tem entre 350 a 400 imagens, alguns poucos, 3 ou 4 que são muito distante dos outros em quantidade de imagens mas para o momento isso não importa. Em asiáticos-indianos, é curioso como há uma variedade bem mais uniforme na quantidade de fotos por perfil, mas como isso contrasta com o fato de termos apenas 12 perfis. De modo geral o que percebemos é que houve sim um apego a uma quantidade mínima de imagens por perfis em todos os grupos embora a gente não entenda os critérios usados apenas para quantidade de imagens e não para diversidade de perfis, o que nos dá margens quantitativas confortáveis embora ainda não prove a diversidade das imagens, já que não adianta muito tem 400 imagens quase iguais com a mesma posição do rosto, e essa é uma análise que vou ficar devendo.
Chama a atenção é a quantidade de perfis para cada grupo, apenas “latinos-causasianos” tem uma quantidade razoável de perfis, 140 e 240 para mulheres e homens respectivamente, os demais tem entre 10 e 24, a excessão de mulheres do leste asiático que tem 40 perfis, mas ainda assim fica muito distante da quantidade categorizada como latinos-causasianos.
Na próxima edição da newsletter vou falar sobre o “padrão ouro” em IA e como isso é um tanto quanto tendencioso, e este dataset VGG-Face2 é um dos datasets que se enquadram nessa designação de parâmetro comparativo, usado quase que como um padrão não-oficial mas demasiadamente recorrente no automático.
Voltando ao assunto, para mim, o ideal seria ter pelo menos 50 imagens de 10 perfis de cada grupo mas não é possível eu passar tantas imagens assim considerando o meu atual limitado computador, daí que 6 imagens de 9 perfis de cada grupo (6 imagens * 9 perfis * 8 grupos = 432 imagens) está no limite do que posso fazer no momento e é o que fiz. Assim é possível ter uma visão geral embora não tão boa quanto eu gostaria com mais imagens, e corrigindo, ainda que de forma limitada, essa enorme discrepância de quantidade de perfis que se encaixa perfeitamente na quase piada do começo do texto.
O DeepFace
Ainda vou escrever um outro anexo a esse assunto no futuro acerca do funcionamento interno da rede neural, por enquanto, ficamos apenas com o resultado que já nos diz muita coisa, a começar pelo formato do resultado:
{
"emotion": {
"angry": 0.022488688295032876,
"disgust": 6.4426036348981795e-06,
"fear": 0.2815318461675552,
"happy": 85.69675598721241,
"sad": 0.005495361219931504,
"surprise": 11.799792903649385,
"neutral": 2.193926219280137
},
"dominant_emotion": "happy",
"region": {
"x": 60,
"y": 52,
"w": 103,
"h": 135
},
"age": 35,
"gender": "Man",
"race": {
"asian": 2.3239485919475555,
"indian": 8.368062973022461,
"black": 1.3936281204223633,
"white": 24.868392944335938,
"middle eastern": 34.79509651660919,
"latino hispanic": 28.25087010860443
},
"dominant_race": "middle eastern"
}
É realmente interessante ter esses campos race
/dominant_race
e emotion
/dominant_emotion
já que redes neurais não são determinísticas assim como todo modelo estatístico, elas indicam tendências com base nos dados recebidos, elas não são categóricas, então no caso acima, classificou como “oriente médio”, mas com apenas 34.7% de ser isso mesmo, mas também tem 28% de chances de ser latino-hispânico e 24.8% de ser branco. E logo de cara podemos já definir 2 formas de analisar a qualidade do resultado:
- Identificar se a resposta do algorítimo corresponde ao que o dataset indica.
- Estimar algo como um nível de certeza em respostas como as relacionadas a emoção e raça, já que lidam com valores percentuais.
Ambas as abordagens tem suas limitações, as “raças” indicadas pelo algoritmo não são as mesmas das “etnias” indicadas pelo dataset, talvez com única correspondência sendo entre “black” e “african-american”, nos demais o algoritmo separa o que está junto no VMER como no caso de asiáticos e causasianos e “latinos”, mas isso falarei pouco mais a frente.
Quanto ao nível de certeza, que podemos definir via variância já que uma margem grande de incerteza significaria ter possibilidades muito próximas entre diferentes “raças” ou emoções, enquanto uma grande margem de certeza seria ter algum dos possíveis resultados com quase 100% e o restante próximo ao zero e nesse caso teríamos uma grande variância.
Resultados
Quanto a “gênero”
O que fiz foi basicamente agrupar por “gênero” e “raça”/“etnia” e contei a quantidade de vezes que o “gender” definido pelo VMER e a saída do DeepFace discordavam. O resultado é essa tabela abaixo, que eu acho que nem preciso explicar de tão evidente que é como a qualidade dos resultados é diferente para mulheres.
ethnicity_name | gender | incorrect_gender | incorrect_gender [%] |
---|---|---|---|
“African American | “f” | 15 | 27.777778 |
“African American | “m” | 0 | 0.0 |
“Asian Indian” | “f” | 10 | 18.518519 |
“Asian Indian” | “m” | 0 | 0.0 |
“Caucasian Latin | “f” | 9 | 16.666667 |
“Caucasian Latin | “m” | 0 | 0.0 |
“East Asian” | “f” | 11 | 20.37037 |
“East Asian” | “m” | 0 | 0.0 |
Obviamente que através de uma tabela assim nós não estamos discutindo as imagens e ficamos só na especulação quando teorizamos sobre qualidade da imagem ou posição do rosto, corte de cabelo, etc. Então resolvi pegar algumas imagens que foram incorretamente classificadas quanto a “gênero” e comparar com outras corretamente classificadas, e sinceramente, para a maioria eu não consigo imaginar qualquer característica que justifique algum engano e essa é a maior dificuldade em interpretar os resultados de algoritmos como redes neurais artificiais, elas lidam com organizar dados (nesse caso matrizes que representam imagens) de forma espacial através de muitas camadas que filtram partes da matriz e a transformam de diferentes formas. Tratarei melhor disso futuramente mas só agora já dá para perceber essas dificuldades em entender as limitações.
Há alguns casos especiais que podem ser justificados pela qualidade da imagem, mas há outros que realmente há uma inclinação racial e étnica bem acentuada. Como uma última tentativa de tentar identificar se há padrões que determinam o que o DeepFace reconhece incorretamente o “gênero” nas mulheres, vamos listar as que mais foram incorretamente classificadas:
Quanto a “raça”
A maior diferença entre analisar os dados via correlação direta e via variância do resultado é que aqui temos uma situação bem mais complexa e com ressalvas do que a simples contagem como no item anterior. Aqui só podemos medir a “certeza” do algoritmo na resposta dada. Se as categorias de “raça” segundo o deepface estivessem conformidade com “etnia” no VMER, teríamos uma excelente camada de análise acerca da assertividade que complementaria muito bem a análise sobre a “certeza” na resposta dada, ainda que a tendência é que quanto menor a certeza mais identifique incorretamente determinado perfil.
Explicando brevemente como é a resposta dada por uma rede neural e porque faz sentido estarmos atendo à “certeza” da resposta: Na perspectiva do algoritmo, todo o processamento se resume a filtrar e processar os dados, que é passar os dados em funções como a do 1º grau e a cada etapa do treinamento se vai ajustando valores usados nessa função, como no caso da função f(x) = ax+b
, o treinamento vai ajustando os valores de a
e de b
e no final nós não temos uma resposta única, mas como uma coordenada de um ponto no espaço.
Sei o quanto parece estranho a resposta não ser um “sim” ou um “não”, mas tudo nas redes neurais tem a ver com representações espaciais num espaço euclidiano, ou seja, como se tudo fosse num plano cartesiano que em vez de ter apenas os eixos X
e Y
ele tivesse quantos eixos forem necessários e cada eixo é justamente uma abstração sobre cada etiqueta possível, então quanto mais etiquetas, mais dimensões no resultado. A ideia é que se o eixo X
indica, por exemplo, que o cabelo é preto e Y
indica que o cabelo é ruivo e Z
que o cabelo é castanho claro, o treinamento vai ajustar todo o processamento dos dados para que a resposta “correta” se dê pelo eixo com valor maior na resposta. Seguindo o exemplo, se temos 3 eixos, x, y e z, e a resposta do algoritmo for [1000, -2, 5], isso significa que para aquela entrada, a rede neural classificou como “cabelo preto” já que relacionamos essa etiqueta ao eixo x
. Para transformar esse resultado em percentuais que indicam alguma certeza naquela resposta dada, é comum usar a função softmax ou alguma de suas variações, e é esse o resultado que temos em “raça” no deepface, além de explicitamente indicar a “raça dominante”.
Como dito antes, se temos uma resposta que é um vetor de percentuais e um dos números nesse vetor é próximo ao 100 e os demais são próximos a 0, temos então uma grande variância, enquanto se todos tiverem quase os mesmos valores, indicando uma incerteza sobre qual a resposta, a variância será baixa. O gráfico abaixo mostra a média das variâncias agrupadas por “gênero” e “etnia” e as médias de cada “raça” segundo o deepface. Nada disso indica acerto, mas nos indica como a rede neural dentro do deepface interpreta cada “raça” e temos como nossa base de apoio comparativo as “etnias” do VMER que nos ajudam a ter noção de onde é que o deepface tende mais a se confundir. E é exatamente o espaço da incerteza que precisamos explorar.
Se aplicarmos os mesmos cálculos para média e fizermos um gráfico similar ao anterior só que tendo como referência as categorias do próprio deepface em vez do VMER, poderemos notar algo interessante: enquanto mulheres afro-americanas tiveram uma média de variância baixa, a certeza dada pelo deepface foi bastante alta para mulheres negras, podemos concluir que quando acertou, acertou com convicção e quando errou também foi com convicção. Mas talvez o mais interessante, considerando que estamos explorando os limites, seja acerca do que o algoritmo identificou como “latino-hispânico” e do “oriente-médio”, ambos tem margens realmente baixas de certeza, sendo que mais que isso, revelam muito bem sobre quais outras alternativas o algoritmo quase indicou como a “raça dominante”. No caso do “oriente-médio”, ele afirma que se não indicasse dessa forma, seria ou branco, ou latino-hispânico ou indiano, nunca asiático ou negro, mas no caso do “hispânico-latino”, poderia ser realmente qualquer um, com menor chande de ser negro.
Como forma de confirmar como a incerteza na resposta costuma significar uma baixa qualidade de acertos, vemos os reflexos disso quando segmantamos as respostas de acordo com a etnia definida pelo VMER:
E ao contabilizar quais as “raças” com maior percentual segundo o treinamento do deepface, temos uma inclinação para brancos e asiáticos. curiosiamente, para homens negros, embora a ocorrência de resultados seja acima da média, ainda é abaixo das 54 imagens definidas no VMER como afro-americanos:
Apesar de ter 52 imagens para cada uma das 4 ‘etnias’ definidas pelo VMER, apenas asiáticos e brancos segundo o deepface, tem maior representação no dataset com os resultados sendo superiores aos 52 de cada grupo.
E para concluir essa fase das análises, foram esses os perfis onde o algoritmo menos certeza teve em média para as fotos dos rostos, o que não quer dizer acertar ou errar, mas estarem na margem entre serem classificadas como uma ou outra “raça” segundo o DeepFace:
Conclusões…
É um caminho muito simplista se valer de percentuais gerais para julgar algo acerca de algum algoritmo, o que tentei fazer aqui foi mostrar um processo simples de investigação a partir dos resultados do deepface para identificar quais seus limites e vieses. Quando se trata de pessoas, não há como não ter viés, afinal carregamos toda visão de mundo da realidade que nos cerca e apredemos a projetar ideais. Obviamente toda produção humana carrega um pouco de seus vieses, e isso se reflete com maior intensidade em escolhas como utilizar alguma obscura definição de “raça” para diferenciar pessoas semelhantes apenas pela parte do planeta em que nasceram, mas que não levam em conta obrigatoriamente algum fenótipo. Apontar essas coisas também demonstra um viés meu, e ambos os lados tentam se provar através de dados e estatísticas sobre o algoritmo nesse caso. Não falo disso para dizer ambos os lados são iguais, mas para dizer que nada em ciência e tecnologia tem neutralidade.
É justamente sob a premissa da não-neutralidade que a investigação deve se fundamentar, e para alcançar seu objetivo deve explorar as margens e limites, segmentando cada possível grupos de características em comum e estudando seu comportamento a cada contexto que lhe cabe. E aqui nesse breve estudo faltou muito ainda, como segmentar as imagens pela qualidade delas, as médias de idade para cada “raça” ou “etnia” e cada “gênero”. Não fiz pois esses são elementos menores do que eu pretendia explorar, que é como as escolhas sobre os datasets influenciam os resultados, tendendo sempre a favorecer homens brancos com aparência heteronormativa se as imagens em maior quantidade são exatamente essas. Me surpreendeu o fato que ao classificar o “gênero” só mulheres, mesmo as “caucasianas-latinas”, tenham sido identificadas incorretamente na amostra usada para análise, enquanto homens afro-americanos, caucasianos-latinos e asiáticos em sua maioria tenham sido bem identificados, é no mínimo curioso que o mesmo não tenha ocorrido com mulheres afro-americanas e asiáticos-indianos, e é justamente nesses últimos que aparece a maior quantidade de imagens classificadas como “latino-hispânico” e do oriente médio.
Há uma falta de objetividade que me incomoda bastante e que nem precisaria provar através de tantos gráficos como fiz, começando pela obscura definição de “gênero”, se a referência for o sexo biológico, o uso de fotos de rosto para classificação é algo completamente inválido porque não-necessariamente estão correlacionadas, além de que se o algoritmo entender pelos dados que o formato do rosto é o aspecto mais determinante, estará na realidade inferindo sobre biotipos enquanto se focar em acessórios e cabelo estará mais refletindo padrões de moda de uma região num certo momento histórico do que de fato tratando de “gênero” de forma ampla/genérica. Mesmo para as tentativas de argumento mais biologizadas, essa abordagem não tem a mínima lógica. O máximo que ela reflete é o esforço em impor determinados padrões ao algoritmo como se só esses padrões fossem aceitáveis.
Eu tinha dito na edição anterior que só faz sentido usar um algoritmo para classificar dados se eles são classificáveis de algum modo, isto é, cada grupo de dados precisa ter diferenças significativas, como em fotografias de carros, motos, ônibus, caminhões, pedestres e ciclistas, uma câmera com imagens analisadas em tempo real por uma rede neural para criar estatísticas de tráfego numa via faz todo o sentido, mas considerando o quanto o conceito de raça aplicado a fenótipos se fundamenta num fato social nascido do domínio de um povo sobre outro, que a discriminação ganhou contornos de aparência científica justamente por uma pseudociência, a eugenia, e que vivemos numa sociedade com tanta herança da escravidão e que se vale da discriminação, separando pessoas em raças, racianlizando elas justamente para manter estruturas de poder e dominação que favorecem sempre os mesmos grupos de pessoas. Para mim, ainda é justificável um dataset ter indicações nesse sentido se for algo voltado para testar algoritmos dessa forma como fiz, buscando vieses no treinamento, mas todo algoritmo que reproduz essa visão a partir da divisão de raças, é por sua própria definição, racista.
Entendo que num primeiro momento alguém se pergunte “mas quem usaria um classificador de gênero e raça baseado apenas em imagens no mundo real?”. Grandes varejistas como redes multinacionais de supermercados usam tecnologias assim, existem vários artigos e repostagens sobre a Walmart, por exemplo, esta matéria de 2017 que fala sobre uma patente que usa IA para identificar clientes insastifeitos, ou esta outra de 2019 que diz que a empresa usa algoritmos para identificar roubo nas lojas e que gerou controvérsia entre próprio funcionários acerca de funcionar de verdade ou não pelo número de falsos-positivos. Não posso afirmar categoricamente que a Walmart usa algoritmos que levam em consideração algum conceito de raça, etnia ou gênero, embora muito possivelmente use pois para a grande maioria das pessoas é impensável ter qualquer sistema de classificação de imagens no setor de segurança que não leve em conta a “raça”, mas esse é um bom exemplo do uso de tecnologias ligadas a processamento de imagens de pessoas onde o treinamento deficiente do algoritmo e erradamente fundamentado que pode levar a situações absurdas através de falsas acusações de roubo, não é muito diferente da loja Zara em Fortaleza que adotou um código para os funcionários ficarem alertas para pessoas negras ou com uma roupa mais simples que entrassem no estabelecimento comercial.
Num uso real é importante entender quais são as margens confiáveis de utilização do algoritmo e se as teorias por trás das escolhas sobre os dados e etiquetas atribuídas a cada conjunto de dados para treinamento tem um fundamento ético e real, e não é apenas um produto preconceituoso de um meio discriminatório. Não é de se estranhar que o perfil feminino que teve o pior resultado na classificação do “gênero” tenha sido justamente o de uma mulher negra usando roupas que representam sua cultura e cujo rosto foge aos padrões estéticos de mídias de massa norte-americanos e europeus. Fatos assim nos comunicam tanto as deficiências das abordagens comuns no meio acadêmico que acabam se transferindo para o mercado pela facilidade de acesso a datasets, quanto nos falam de algo que repito ao longo desses textos faz tempo, acerca da transparência e definição de testes e padrões de qualidade, algo que só seria universal por meio de regulação.
Ainda não chego ao extremo de afirmar que deveríamos banir o reconhecimento facial, há situação que ele faz sentido como em aeroportos e impedir fraudes bancárias ou em sistemas previdenciários, mas em todo o caso é preciso garantir a confiabilidade e isso só se obtém através da transparência em testes e auditorias de terceiros. O SERPRO é um exemplo interessante por reproduzir um padrão recorrente em empresas da área já que o BioValid tem em sua página várias palavras positivas com destaque para confiabilidade e segurança mas sem nenhuma informação sobre como o algoritmo funciona ou sobre testes realizados ou até mesmo sobre auditoria. Pesquisando um pouco mais, o máximo que encontrei sobre auditoria foram informes do Serpro sobre a qualidade de suas próprias auditorias internas, mas se essas auditorias não são abertas ao acesso público, e falo especialmente sobre os dados e uso de aprendizado de máquina, aqui devo repetir uma piada recorrente do Greg News: isso é como a Carla Zambelli fazendo um comentário no facebook dando apoio a si mesma como se fosse uma 3ª pessoa. Obviamente não posso afirmar que o SERPRO faz algo de errado mas também não tem como afirmar absolutamente nada se não há transparência; e de uma discussão técnica, o que temos é apenas a palavra dada por um dos lados.
Quando eu passo tanto tempo escrevendo e explicando o funcionamento das coisas é justamente para não reduzir tudo a mistificação como se IAs fossem entidades superiores quase divinas e um tanto quanto alienígenas, e nem cair na aparência corporativa do tipo da IssoÉAssim, a empresa que detém o monopólio de tudo em Família Dinossauro, que para todas as questões técnicas e objetivas dá respostas evasivas afirmando o lema da empresa com o maior esforço concentrado em cuidar da aparência. Não se tratam questões técnicas e nem se pode chamar de ciência se não há apresentação de provas e discussões pautadas por testes e avaliações, da mesma forma é antidemocrático não existir transparência acerca de dados e tecnologias utilizadas pela administração e forças públicas e que nos afetam diretamente. Não falo apenas do SERPRO, mas muito especialmente de tudo o que relaciona reconhecimento facial e segurança, que só de olhar de longe já se vê uma imensa nebulosidade.
Já falei antes mas como seria o ideal para mim: primeiro que não consigo ter provas materiais de que temos técnicas maduras o suficiente de reconhecimento facial para uso em espaços externos, e mesmo nos ambientes internos, fora de condições muito restritas de controle de iluminação e caracteristicas da câmera e ângulo de captura da imagem, ainda não é confiável ao ponto do uso na segurança pública como está virando moda entre prefeituras espalhadas pelo país, mas num uso mais estratégico para o comércio e que não oferece risco de prender pessoas inadvertidamente, como que para estudar o público que vai a algum shopping, eu apenas pegaria as imagens e em vez de usar algoritmos para listar características, usaria onde elas foram, e se possível o que compraram, e usaria um algoritmo de clusterização, que diferente da classificação onde já partimos tendo em mente grupos bem definidos, com a clusterização nós descobrimos que grupos são esses através de padrões em comum, ainda que de nada adianta se os dados reforçam estereotipias ou subrepresentam pessoas, quando os dados são tendenciosos, não há como escapar de um algoritmo tendencioso.
A próxima edição será sobre hegemonia e datasets “padrão ouro”, que são datasets que mesmo não sendo obrigatórios em congressos ou em periódico algum, acabam sendo tratados, por uma série de fatores, como um padrão de uso em pesquisas para comparar algoritmos similares e nisso eles se transformam numa referência de qualidade. O VGG Face2 é um desses e já vimos o quão desigual ele é. Não vou dizer que em 1 mês ou 2 semanas terminarei de escrever, vai depender de muitos fatores eu concluir. Espero que estejam achando o tema bem interessante e até mesmo necessário, esta é uma discussão que infelizmente ainda é muito presa a nichos mesmo afetando a todos e entrando nas pautas neoliberais que parecem ter como único objetivo transformar o ambiente urbano numa materialização de distopia corporativa, privatizando todos os espaços públicos e reduzindo as pessoas a dados. Reagir exige conhecimento técnico mas principalmente articulação política e estratégias bem definidas. Sei que meu alcance é mínimo mas espero que pelo menos ajude quem leu este enorme texto a pelo menos ter uma visão mais clara sobre como podemos interpretar algoritmos a partir de seus resultados.
Links relacionados:
só para a newsletter: aqui estão os datasets que usei, com os resultados e uns “cards” que fiz para juntar os resultados do deepface para eu ter uma visualização mais completa em cada imagem, caso alguém queira também analisar o resultado do deepface: http://e.pc.cd/IOdotalK
- deixei todos os códigos usados nesse repositório no github (infelizmente, o github ainda tem um sistema de busca melhor e uma socialização mais forte, mas mal vejo a hora do codeberg chegar neste ponto). Ao longo da semana vou melhorar o readme, prometo.
- Por coincidência, o Manual Do Usuário publicou uma nota interessante sobre uma notícia: O acordo entre Serpro e DrumWave, startup que quer criar “carteira de dados pessoais” no Brasil
- The IRS Should Stop Using Facial Recognition - Trata de algo semelhante ao que o ambiente do cadastro no gov.br faz para tentar obter a maior quantidade possível de dados nosso, incluindo fotos do rosto para autenticação facial, só que no contexto norte-americano. Este texto foi escrito pela Joy Buolamwini, que entre muitas outras coisas que está envolvida, fundou a Algorithm Justice League, que reúne materiais bem interessantes desde pesquisas a reportagens sobre reconhecimento facial e seus problemas.
- O mapa da tecnologia de Reconhecimento Facial no mundo - Este é um texto bem interessante sobre a adoção de reconhecimento mas mais interessante ainda são os dados usados para desenhar os mapas: uma tabela no google docs que indica status de uso da tecnologia, até 2 fontes que comprovam isso e alguma observação acerca de alguma particularidade e entre as fontes, se repete o link para um documento também no google docs sobre o uso de biometria em vários países, tudo recheado de fontes.
Comecei a ler um livro chamado BIG TECH a ascensão dos dados e a morte da política de Evgeny Morozov, ainda mais ou menos pelo começo dele, há esse 2 interantíssimos parágrafos depois de citar projetos de startups e big techs voltados para “cidades inteligentes”:
E o que há na retórica da “cidade inteligente” [smart city] – outro conceito popular – que soa tão reconfortante e progressista? Numa leitura mais atenta, isso significa apenas que nossa infraestrutura urbana será entregue a um grupo de empresas de tecnologia – não muito adeptas da transparência –, que a administrará do jeito que quiser, tornando quase impossível mais tarde a devolução das cidades ao setor público. (Como se faria uma reestatização dos serviços encampados pelo Google, por exemplo?) Seria apenas uma coincidência o fato de que a agenda oficial de política europeia do Departamento de Comércio americano, tal como apresentada em seu website até o fim do governo Obama, relacionava, simplesmente: “ttip*, cidades inteligentes, mercado único digital”?
Uma perspectiva pós-internet como essa talvez faça o mundo parecer muito deprimente – mas ele ficará tão deprimente quanto a realidade do capitalismo contemporâneo. Essa nova visão também proporciona um resumo do que precisa ser feito – e mostra em quem se pode ou não confiar para levar adiante esse programa de emancipação. Uma discussão adulta e madura sobre a construção de um futuro tecnológico robusto tem de partir do reconhecimento de que esse futuro tecnológico deverá ser desvinculado do neoliberalismo.