• No results found

Concluding remark of alternative WDP applications

ortogonaliza¸c˜ao sim´etrica ´e dado a seguir:

1. Escolher um vetor de pesos w inicial (por exemplo, aleatoriamente).

2. Executar uma itera¸c˜ao do algoritmo FastICA para todos vetores wi em paralelo.

3. Realizar uma ortogonaliza¸c˜ao sim´etrica nos vetores wi.

4. Se n˜ao convergiu, voltar ao passo 2.

A ortogonaliza¸c˜ao sim´etrica pode ser obtida pelo m´etodo cl´assico da raiz qua- drada de uma matriz. Dessa forma, a matriz W formada pelos vetores wi´e ortogonalizada

da seguinte maneira:

W ← (W Wt)−12W (2.47)

Uma outra maneira ´e executar o seguinte algoritmo iterativo:

1. W ← W

k W k.

2. W ← 32W − 12W WtW .

3. Se W Wt n˜ao pr´oximo o bastante da matriz identidade, voltar ao passo 2.

2.9

Exemplo de aplica¸c˜ao do ICA

Ap´os a defini¸c˜ao de diversos aspectos que envolvem a an´alise de componen- tes independentes, se torna necess´ario a visualiza¸c˜ao da t´ecnica como uma ferramenta para resolver o problema da separa¸c˜ao cega de fontes. Dessa maneira, nessa se¸c˜ao ser˜ao apresentados e discutidos alguns exemplos da utiliza¸c˜ao do ICA.

O primeiro exemplo ´e um exerc´ıcio proposto como experimento computacional em [Haykin, 2001]. O experimento prop˜oe a utiliza¸c˜ao dos seguintes sinais e matriz de mistura:

2.9 Exemplo de aplica¸c˜ao do ICA 34

Figura 2.4: Sinais do lado esquerdo: sinais originais gerados manualmente. Sinais do lado direito: misturas geradas a partir de uma transforma¸c˜ao linear dos sinais originais utilizando a matriz A

2. u2(k) = 0, 01sign(sen((500k) + 9cos(40k)))

3. u3(k) = ru´ıdo uniformemente distribu´ıdo no intervalo [-1, 1]

A =      0, 56 0, 79 −0, 37 −0, 75 0, 65 0, 86 0, 17 0, 32 −0, 48      (2.48)

Os sinais originais e as misturas obtidas ap´os a transforma¸c˜ao linear s˜ao ilus- trados na figura 2.4.

As misturas s˜ao ent˜ao, dadas como entrada do algoritmo FastICA que ir´a iterativamente calcular proje¸c˜oes wi (vetores ou pontos no espa¸co), onde i = 1, ...n e

n = 3. Os vetores wi iniciais s˜ao obtidos aleatoriamente, o valor do erro ´e definido como

0, 0001 e o n´umero m´aximo de itera¸c˜oes para cada componente independente foi definido como 500. A fun¸c˜ao g escolhida para medir a n˜ao-gaussianidade das componentes foi a g3(y) = y

3

, vista na eq. (2.43).

A primeira componente independente foi calculada ap´os 7 itera¸c˜oes, a segunda componente tamb´em ap´os 7 itera¸c˜oes, enquanto que a terceira e ´ultima foi calculada ap´os 2 itera¸c˜oes. As componentes independentes yi(k) calculadas pelo algoritmo s˜ao ilustradas

2.9 Exemplo de aplica¸c˜ao do ICA 35

Figura 2.5: Componentes independentes obtidas utilizando a matriz de separa¸c˜ao W calculada pelo algoritmo FastICA

Como pode ser observado, o FastICA obteve uma estimativa das componentes independentes satisfat´oria (Figura 2.5), embora seja poss´ıvel perceber aspectos discutidos na se¸c˜ao 2.3, onde foram detalhadas algumas ambiguidades da an´alise de componen- tes independentes. A primeira delas trata da impossibilidade de determinar as energias (variˆancias) das componentes independentes, j´a que qualquer escalar multiplicado nas componentes independentes pode ser eliminado na matriz de mistura, j´a que ambos s˜ao desconhecidos. Por isso, percebemos altera¸c˜oes nas amplitudes dos sinais estimados em rela¸c˜ao aos sinais originais. Al´em disso, ´e ainda poss´ıvel inverter qualquer uma das com- ponentes independentes, j´a que as proje¸c˜oes wi e −wi possuem mesma dire¸c˜ao, embora

estejam em sentidos contr´arios. O crit´erio de convergˆencia do algoritmo FastICA leva em considera¸c˜ao as duas proje¸c˜oes.

A segunda ambiguidade trata da ordem das componentes independentes. Como visto na se¸c˜ao 2.3, n˜ao ´e poss´ıvel estimar as componentes independentes e garantir que estas estejam ordenadas exatamente como os sinais originais, j´a que podemos trocar os ter- mos na equa¸c˜ao (2.2) livremente e ainda assim obter o mesmo resultado. Isto tamb´em se d´a pelo fato da matriz de mistura e das componentes independentes serem desconhecidos. Como segundo exemplo, s˜ao utilizados dois sinais de voz gravados a uma taxa de 16000 amostras por segundo. Os dois sinais consistem em duas pessoas falando no idioma inglˆes. Os dois sinais est˜ao dispon´ıveis em (http://inc2.ucsd.edu/∼tewon/).

2.9 Exemplo de aplica¸c˜ao do ICA 36

Figura 2.6: Sinais do lado esquerdo: sinais de voz originais. Sinais do lado direito: misturas obtidas a partir da transforma¸c˜ao linear entre a matriz de mistura A e os sinais originais

A matriz de mistura A utilizada foi a mesma utilizada nos experimentos em [Charoensak and Sattar, 2005] para obter os sinais de mistura, tal que:

A =   0.6 1 1 0.6   (2.49)

A figura 2.6 ilustra os sinais de voz originais (lado esquerdo) e as misturas obtidas a partir da transforma¸c˜ao linear entre a matriz de mistura A e os sinais originais (lado direito).

Da mesma forma que o exemplo anterior, os pontos wi iniciais s˜ao obtidos

aleatoriamente, onde i = 1, ..., n e n = 2. O valor do erro foi definido em 0, 0001, o n´umero m´aximo de itera¸c˜oes foi definido como 500 e a fun¸c˜ao escolhida para medir a n˜ao-gaussianidade das componentes foi a g3(y) = y

3

.

A primeira componente independente foi calculada ap´os 5 itera¸coes do algo- ritmo, enquanto a segunda foi calculada ap´os 2 itera¸c˜oes. A figura 2.7 mostra as com- ponentes indenpendentes obtidas e embora o algoritmo apresente boas estimativas, nova- mente ´e poss´ıvel observar a presen¸ca das ambiguidades do modelo ICA.

Apesar de somente dois exemplos serem discutidos, outros experimentos foram realizados afim de refor¸car a utilidade do ICA. Foram realizados experimentos utilizando tanto a ortogonaliza¸c˜ao deflacion´aria quando a sim´etrica al´em de outras fun¸c˜oes g para

2.9 Exemplo de aplica¸c˜ao do ICA 37

Figura 2.7: Componentens independentes obtidas com a matriz de separa¸c˜ao W calculada pelo algoritmo FastICA

medi¸c˜ao da n˜ao-gaussianidade. Na maioria dos experimentos o algoritmo apresentou boas estimativas das componentes independentes.

No pr´oximo cap´ıtulo, discutiremos acerca dos dispositivos reprogram´aveis FPGA, seu hist´orico, funcionamento interno e algumas maneiras de reprogram´a-los.

38

3 FPGA e Linguagem de Descri¸c˜ao de

Hardware

A tecnologia Field Programmable Gate Array (FPGA) surgiu nos anos 80 como uma alternativa aos j´a comuns Dipositivos L´ogico Program´aveis e com o intuito de possi- bilitar a implementa¸c˜ao de circuitos l´ogicos complexos e de alta performace. Constitu´ıdos de interconex˜oes program´aveis e blocos l´ogicos que reunem aspectos de l´ogica combinaci- onal e sequencial, os FPGAs s˜ao considerados uma boa alternativa para a implementa¸c˜ao de circuitos l´ogicos de grande porte e ainda assim possuir uma grande capacidade de re- programa¸c˜ao. O termo Field Programmable refere-se ao fato de que, diferentemente de dispositivos projetados por seus manufaturadores, FPGAs s˜ao configurados no campo, ou seja, em um laborat´orio ou at´e mesmo j´a estando conectados a um sistema eletrˆonico.

Neste cap´ıtulo ser˜ao discutidos alguns aspectos dessa tecnologia, al´em de de- talhar o funcionamento interno dos FPGAs e a utiliza¸c˜ao de linguagens de descri¸c˜ao de hardware para a implementa¸c˜ao circuitos l´ogicos nesses dispositivos.