Wrocław, 16 czerwca 2008

Raport opracowany na zaliczenie przedmiotu:
ARE3513 "Metody i algorytmy sztucznej inteligencji"

Temat:
Wykrywacz kłamstw

Autorzy:
Grzegorz Puzio 140398(ARR)
Łukasz Ulanicki 140430 (ARR)

Prowadzący:
dr inż. Witold Paluszyński


Wrocław, June 16 2008

This report has been prepared as a requirement for the course:
ARE3513 "Methods and algorithms of artificial intelligence"

Subject:
Lie detector

Authors:
Grzegorz Puzio 140398 (ARR)
Łukasz Ulanicki 140430 (ARR)

Conducted by:
Dr Witold Paluszyński

The aim of our project was to create an algorytm of 'detecting lies' basing on three biometric signals - pulse, galvanic-skin responce and rhythm of perspiration. What is more, we based on an analysis of stress' level in a human voice. The biometric signals came from a device built by us and the voice was recorded from a microphone connected directly to a computer. The main task was to extract noteworthy parameters from the signals. Then we had to create a system based on patterns that would learn how to correctly sort these signals. For this purpose we used artificial neural networks. Creating patterns occured to be the biggest problem, especially the lie's pattern, as we had to survey some number of people and maintain appropriate conditions of the mensurations at the same time.


1. Wstęp

Celem naszego projektu było stworzenie algorytmu "wykrywania kłamstw" na podstawie 3 sygnałów biometrycznych - pulsu, reakcji skórno-galwanicznej oraz miarowości oddechu, oraz na podstawie analizy poziomu stresu w głosie. Sygnały biometryczne pochodziły z urządzenia zbudowanego przez nas, natomiast głos nagrywany był z mikrofonu bezpośrednio podłączonego do komputera. Głównym zadaniem było wyekstrahowanie z sygnałów interesujących nas parametrów, a następnie budowa systemu opartego na wzorcach, który nauczyłby się poprawnej klasyfikacji tych sygnałów. W tym celu wykorzystaliśmy sztuczne sieci neuronowe. Największym problemem okazało się tworzenie wzorców, zwłaszcza wzorców kłamstwa, gdyż w tym celu musieliśmy przeprowadzić szereg pomiarów na ludziach przy zachowaniu odpowiednich warunków badania.


2. Zrealizowane zadania

Większość założeń projektu udało nam się zrealizować, jednak ze względów technicznych musieliśmy zrezygnować z pomiaru oddechu, ponieważ wybór metody pomiaru przy pomocy tensometru okazał się bardzo kłopotliwy. Po pierwsze pomiary obarczone były dużym błędem ze względu na zaszumienia, a po drugie metoda była podatna na wszelkie zakłócenia w postaci ruchów osoby badanej. Praktycznie uniemożliwiało to obliczenie poprawnej wartości liczby oddechów. Dodatkowo, że wszystkich sygnałów biometrycznych, ten najłatwiej jest niezauważalnie kontrolować, celowo wprowadzając urządzenie w błąd. W naszym projekcie skupiliśmy się na pozostałych sygnałach.

3 Analiza zagadnienia

Wśród istniejących metod badania prawdomówności dominują dwie techniki: badania poligraficzne oraz analiza stresu w głosie (VSA - Voice Stress Analisys). Obie techniki posiadają swoich zwolenników i przeciwników, którzy nawzajem oskarżają te metody o nieskuteczność. Wychodzą z założenia, że prawda leży po środku, postanowiliśmy wykorzystać obie te techniki naraz, z małym zastrzeżeniem, że nasze techniki poligraficzne zostały ograniczone do 2 sygnałów. Warto w tym miejscu podkreślić, że termin "wykrywacz kłamstw" jest pojęciem zwyczajowym i odbiegającym znacznie od prawdy. W rzeczywistości urządzenie to nie spełnia swojej dosłownej funkcji, a jedynie ujawnia ślady pamięciowe i emocjonalne u badanej osoby. Podstawą stosowania tych urządzeń do badania prawdomówności jest założenie, że podczas kłamania u ludzi wywoływany jest stres związany z obawą, że oszustwo zostanie wykryte. Stres jest tym większy, im większe kłamstwo i odpowiedzialność z nim związana. Znajduje on swoje odbicie w wielu parametrach życiowych.

4 Problemy

W punkcie 3 przedstawiliśmy ogólną zasadę działania wykrywaczy, teraz chcielibyśmy wspomnieć o problemach z nią związanych. Ponieważ postanowiliśmy wykorzystać sztuczne sieci neuronowe, potrzebne nam były wzorce zachowania się sygnałów, zarówno dla prawdy, jak i kłamstwa. O ile stworzenie wzorców dla prawdy nie sprawiło nam żadnych kłopotów, o tyle stworzenie wzorców dla kłamstwa okazało się najtrudniejszym zadaniem. Po pierwsze, aby uzyskać taki wzorzec należy wywołać stan emocjonalny (czyli stres) poprzez zadanie odpowiedniego pytania. Badania na wykrywaczu kłamstw stosuje się zwykle w procesach karnych, w celu ustalenia winy bądź niewinności podejrzanych. Na nasze nieszczęście nie dysponowaliśmy grupą ochotników spełniających te warunki, pozostało nam poradzić sobie z tym problemem w inny sposób, mianowicie poprzez zadawanie potencjalnie "niewygodnych" pytań z zaskoczenia związanych z przeszłością osób badanych. Grupę badanych stanowili znajomi oraz my sami.

W związku z tym co napisaliśmy powyżej powstaje jeszcze jeden problem - skuteczność działania algorytmu. Ze względu na obecność czynnika ludzkiego bardzo trudno jest ją ocenić. Możemy jedynie szacować na podstawie kształtów sygnałów, czy sieć zachowała się prawidłowo, jednak sytuacji w której urządzenie mówi, że badany kłamał, a on sam twierdzi że nie, nie jesteśmy w stanie rozstrzygnąć. W dalszej części raportu przedstawimy sposób analizy poszczególnych sygnałów i ich kształty.

5 Opis aplikacji

Do wizualizacji pomiarów z urządzenia służy aplikacja, którą stworzyliśmy na potrzeby innego projektu. Widok okna głównego znajduje na rysunku poniżej: Okno główne aplikacji
Z punktu widzenia naszego projektu istotny jest tutaj, tylko jeden przycisk "Zapisz". Po jego naciśnięciu następuje zapis sygnałów do plików tekstowych, oraz rejestracja głosu do pliku "*.wav". Jest to potrzebne, ponieważ ich analizy dokonujemy w środowisku Matlab. Próbki sygnałów są 7-sekundowe, natomiast próbka głosu 3-sekundowa.

6 Sygnały - metody pomiaru, przygotowanie danych do sieci

6.1 Pomiar tętna

Pomiar tętna obdywa się przy pomocy czujnika do którego przykłada się palec. Widok czujnika znajduje się na rysunkach poniżej

czujnik tetna czujnik tetna 2

Dane zapisane w pliku testowym w postaci 511 próbek są wczytywane w Matlabie do tablicy. Na rysunku poniżej widać przykładowy przebieg pomiaru tętna. Wykres tetna
Następnie wykres poddawany jest drobnej filtracji a następnie jest różniczkowany numerycznie. Na poniższym wykresie widać, że w tak przygotowanego sygnału łatwo wyznaczyć punkty kolejnych pików.
Odfiltrowany i zróżniczkowany pomiar tętna
Ponieważ znamy dokładną liczbę próbek, oraz dokładny czas w jakim zostały one pobrane, możemy wyliczyć wartości pulsu między dwoma uderzeniami serca. Do tego celu używamy napisanego przez nas skrytpu i otrzymujemy wyniki jak w poniższej tabelce:
92.3077 95.2381 95.2381 95.2381 93.7500 92.3077 98.3607
Następnie pozostaje nam już tylko przygotować dane do przepuszczenia przez sieć neuronową. Ponieważ wiemy, że tętno podczas sytuacji stresowych może znacznie skoczyć, będziemy szukać właśnie tych skoków. Wiemy też, że tętno może przyjmować różne wartości dla różnych osób, dlatego jako wejście dla sieci podajemy różnicę między każdą wartością a wartością początkową tętna. Dla przedstawionego przypadku było by to:
0 2.9304 2.9304 2.9304 1.4423 0.0000 6.0530

6.1 Pomiar rezystancji

Pomiaru rezystancji dokonujemy przy pomocy czujnika umieszczonego na dwóch palcach osoby badanej. Sytuacje stresowe powodują dość nagłe i niekontrolowane pocenie się, które jest widoczne zwłaszcza na dłoniach. Dzięki temu na wykresie reakcji skórno-galwanicznej widać spadek wartości. Czujnik używany przez nas widoczny jest na rysunku poniżej:

Czujnik do pomiaru rezystancji Czujnik do pomiaru rezystancji 2


Ponieważ w zwykłych sytuacjach potliwość skóry się nie zmienia, wykres jest zbliżony do stałej, której wartość zależy od badanej osoby. Taki wykres może więc wyglądać następująco: Wykres rekacji skórno-galwanicznej W przypadku tego sygnału wartości zmieniają się dość powoli, dlatego cały przebieg sygnału posegmentowaliśmy na 20 odcinków, i z każdego wyliczyliśmy średnią, a następnie postąpiliśmy podobnie jak w przypadku poprzednim, czyli od każdej wartości odjęliśmy wartość w momencie startu. Taki wektor jest wektorem wejściowym dla sieci neuronowej.
Na poniższym wykresie widać wykres reakcji skórno galwanicznej w sytuacji stresującej:
Wykres rekacji skórno-galwanicznej

6.1 Pomiar stresu w głosie

Pobranie głosu (odpowiedzi badanej osoby na pytanie) jest zsynchronizowane z pozostałymi pomiarami, jednak ze względu na to, że nie ma potrzeby nagrywać aż 7 sekund, nagrywamy tylko 3 sekundy. Nagranie zapisywanie jest w formacie "*.wav" i następnie dokonywana jest na nim operacja dyskretnej transformacji Fouriera. Głównym założeniem metody VSA jest to, że podczas kłamania do normalnych częstotliwości głosu dochodzą inne częstotliwości na poziomie 8-12 Hz spowodowane nierównomiernym napięciem mięśni napinających struny głosowe człowieka. Stąd też pojawia się dodatkowa energia w sygnale, która jest szukana. Badane przez nas częstotliwości zawarte są w granicy 10-100Hz. Przykładowy wykres znajduje się na rysunku poniżej: Charakterystyka głosu

6. Sieci neuronowe

Ze względu na zaimplementowane funkcje do analizy częstotliwościowej dźwięku, jak również gotowych funkcji do wczytywania plików "*.wav" jako środowisko do napisania wybraliśmy Matlaba. Posiada on również wbudowane biblioteki do tworzenia sieci neuronowych.
Ponieważ nasz problem można podzielić na 3 osobne podproblemy, dla każdego z nich stworzyliśmy osobne podsieci, z których każda "głosuje" osobno. Każda z nich ma 2 wyjścia - jedno na "prawda", jedno na "fałsz". Od stopnia skomplikowania każdego zagadnienia zależy wielkość sieci i jej architektura. Dla sieci zajmującej się sygnałem tętna, liczbę wejść ustaliliśmy na 10, bez warstw ukrytych. W przypadku, gdy w pomiarze tętna w ciągu 7 sekund nie wystąpi 10 pików, brakujące miejsca uzupełniane są zerami. Dla sygnału rezystancji skóry, liczba wejść wynosi 20, również nie ma warstwy ukrytej i są 2 wyjścia. Ponieważ problem analizy głosu jest najbardziej skomplikowany, liczba wejść wynosi 90 oraz jest warstwa ukryta składająca się z 50 neuronów. We wszystkich sieciach funkcją aktywacji jest funkcja logarytmiczno-sigmoidalna, a uczenie odbywa się jedną z funkcji metody wstecznej propagacji błędów.

7. Przeprowadzone badania

Badania końcowe przeprowadzaliśmy jedynie na sobie, zatem ocenienie skuteczności działania algorytmu może być kłopotliwe. Podstawową trudnością, o czym wspomnieliśmy wcześniej, było "stworzenie" sygnałów o których z cała pewnością moglibyśmy powiedzieć, że powinny być zakwalifikowane jako kłamstwo. Poszczególne sieci częściej typowały odpowiedź "Prawda", jednak zauważyliśmy, że często wyniku nie dało się poprawnie ocenić ze względu na zakłócenia. Dotyczy to zwłaczsza pomiaru tętna, które jest dość wrażliwe na ruchy, oraz pomiaru głosu, który z kolei można świadomie modulować.

8. Podsumowanie

Naszym zdaniem udało nam się zrealizować zadanie, przynajmniej w jakimś stopniu. Na pewno zwiększenie liczby próbek uczących poprawiłoby działanie sieci. Dodatkowo nie zdążyliśmy przeprowadzić badań dla innych architektur sieci i sprawdzić ich działania.

9. Literatura