This repository has been archived by the owner on Nov 29, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCh.40_Discussion.tex
40 lines (28 loc) · 5.39 KB
/
Ch.40_Discussion.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
\chapter{Hyökkäyksiltä suojautuminen\label{discussion}}
Tässä kappaleessa käydään läpi erilaisia puolustusmenetelmiä NLP-hyökkäyksiä vastaan. NLP-hyökkäykset voidaan torjua korkean tason abstraktiolla, suurella yleisrasituksella, sekä alemman tason abstraktiolla, pienemmällä yleisrasituksella. Ensiksi esitellään korkean tason abstraktion OCR-puolustus, sitten kuvaillaan alemman tason abstraktion suorituskeskeinen puolustautuminen.
\section{OCR-puolustus}
OCR-metodia (eng. OCR, Optical character recognition), eli tekstintunnistusta on käytetty esimerkiksi printatun, skannatun tai käsinkirjoitetun tekstin muuntamiseen muokattavaksi tekstiksi. Joskus tekstin tunnistaminen on vaikeata johtuen esimerkiksi tekstin eri koista, tyyleistä, suuntauksesta tai monimutkaisesta tekstin taustasta. Esimerkiksi nolla-merkki ''0'' ja aakkonen ''o'' voivat olla jollekkin OCR-työkalulle vaikeita erottaa toisistaan. Kyseistä virhelukua havainnollistetaan kuvassa 4.1 ja 4.2. Eri OCR-työkalut saavuttavat tekstintunnistuksen eri tavoilla, mutta esimerkiksi avoimen lähdekoodin OCR-työkalu Tesseractilla on seuraavat vaiheet tekstintunnistukseen kuvasta: (1) kuvan muuntaminen binäärikuviksi, (2) merkkien ääriviivojen tunnistamiset, (3) merkkien ääriviivojen tunnistaminen sanoiksi, (4) sanat tunnistetaan kahteen kertaan, jonka jälkeen teksti on tunnistettu kuvasta. Kuva 4.3 havainnollistaa edelläkuvattua Tesseractin tekstintunnistusprosessia \citep{tesseractocr}.
\begin{figure}[t]
\includegraphics[scale=0.6]{figures/moonshine.png}
\caption{Tekstitunnistettava kuva \citep{tesseractocr}}
\end{figure}
\begin{table}[t]
\caption{Tesseract epäonnistuu tunnistamaan ylätekstin ''Effect'' kuvasta \citep{tesseractocr}}
\begin{tabular}{| l | m{20em} |}
\hline
Alkuperäinen viesti & Tesseractin tunnistama teksti\\
\hline
MoonShine effect & MoonShih\^a€$\square$\~A\\
\hline
\end{tabular}
\end{table}
OCR-puolustuksen läpikäynnin jälkeen voidaan huomata metodin eliminoivan huomattavan monta NLP-hyökkäystä. Näkymättömät merkit, poistatukset sekä uudelleenjärjestelymerkit poistuvat kokonaan tekstintunnistuksen jälkeen tuotetusta tekstistä, koska kyseiset merkit eivät ihmissilmällekkään näkyisi. Roskapostisuodatuksen -ja sensuurin ohituksen lisäksi OCR-puolustus alisuoriutuu eräällä toisellakin osa-alueella.
\begin{figure}[t]
\includegraphics[scale=0.4]{figures/tesseract.png}
\caption{Tesseractin tekstintunnistuksen vaiheet \citep{tesseractocr}}
\end{figure}
Tekstintunnituksen avulla epäselvyydet tekstin aidosta luonteesta voidaan hahmontaa uudelleen tulkitsemalla aineisto uudestaan visuaalisesti. Tämä menetelmä lisää yleisrasitusta huomattavasti riippuen käyttötarkoituksesta, mutta poistaa pahantahtoiset merkit ilman NLP-luokittimen uudelleenkoulutusta. \citep{boucher2021bad}
\section{Suorituskykykeskeinen puolustus}
Keskitymme seuraavaksi näkymättömiin merkkeihin, homoglyyfeihin, uudelleenjärjestelyihin ja poistatuksiin perustuvien hyökkyksien puolustamiseen. Jotkut suorituskykykeskeisistä puolustusmenetelmistä ovat kuitenkin laskennallisesti kalliita, eivätkä koneoppimismallin ulkoistaneet yritykset yleensä pysty taloudellisista syistä nojautumaan kyseisiin menetelmiin \citep{https://doi.org/10.48550/arxiv.1911.07399}.
Näkymättöimen merkkein tapauksessa, tietyt näkymättömät merkit voidaan poistaa suoraan syötteestä. Mikäli sovelluksessa näitä merkkejä ei voida poistaa, voidaan ne korvata \textit{ei-}\texttt{<unk>} upotuksilla. Korvaus tapahtuu lähdekielisanakirjassa, jonne kuvataan tuntematon merkki ''ei-tuntemattomaksi merkiksi''. Näin tuntemattomat merkit eivät voi häiritä ladontaa merkeillä, joiden asiallinen tarkoitus kyseisessä tekstissä ei ole latojalle yksiselitteistä. Homoglyfihyökkäysten torjuminen OCR-menetelmällä on ymmärrettävästi vaikeampaa verrattuina muihin merkkeihin. Paras keino torjua tällaisia hyökkäyksiä olisi kuvata osa homoglyfeistä niiden yleisemmin tunnettuihin vastineisiin. NLP-luokittimen ylläpitäjä joutuu tekemään tässä siis suurimman työn. Uudelleenjärjestelyhyökkäykset voidaan torjua poistamalla kaksisuuntais-ohjausmerkit syötteestä, varoittamalla käyttäjää kaksisuuntais-ohjausmerkkien ilmestyessä syötteeseen tai käyttämällä kaksisuuntais-algoritmia halutun syötteen selvittämiseen. Puolustusmenetelmän valinta riippuu kontekstista, sillä esimerkiksi latinaa tai arabiaa kirjoittaessa ohjelma toimisi väärin pakottamalla käyttäjän syötteestä pois kaksisuuntais-ohjausmerkin \texttt{U+200F}. Poistatukset yleensä havaitaan NLP-luokittimien ulkopuolella syötteen annon alkuvaiheessa. NLP-luokittimen tasolla tähän tarvitsee harvemmin puuttua ja käyttäjälle voidaan pahimmassa tapauksessa lähettää varoitus poistomerkkien olemassaolosta syötteessä. On silti tärkeää tiedostaa poistatuksien puolustus, mikäli käyttöjärjestelmä unohtaa puuttua kyseiseen hyökkäystyyppiin. \citep{boucher2021bad}
Roskapostisuodattimeen -ja sensuurin ohitukseen kohdistuvat hyökkäykset voidaan yrittää torjua muun muassa DNE-metodilla (eng. Dirichlet Neighborhood Ensemble) \citep{dnedefense}. Metodissa korvataan virtuaalisten lauseiden sanoja näiden synonyymeillä. Tämän jälkeen puolustava NLP-luokitin koulutetaan kyseisiä lauseita vastaan. Metodin tarkoituksena on siis puolustautua synonyymin korvausta vastaan, joka esiteltiin alikappaleessa 2.1.