블로그 이미지
매몰

모바일 어플리케이션 개발 1인 기업 고영진모바일입니다. 저와 함께 맛깔스러운 앱을 만들어 보아요~

Rss feed Tistory
2018.08.27 17:36

수학적 편견... 대량살상 수학무기


사법부의 재판 거래가 사실로 밝혀지면서 차라리 인공지능한테 재판을 맡기자는 우스갯소리까지 나온다.

그만큼 사법부의 신뢰가 떨어졌다는 의미이다. 그렇다면 왜 하필 인공지능한테 맡기자는 말이 나왔을까? 인공지능은 신뢰할수 있다는 말인가? 아마 많은 사람들이 그렇게 생각할지도 모른다.





많은 사람들의 기대와는 달리, 인공지능의 근간인 알고리즘은 완벽하지 않다. 그 이유는 간단하다. 사람이 만들기 때문이다. IT업종의 종사자 특히, 프로그래머라면 이런한 불편한 진실을 너무나도 잘 알것이다. 기술력도 문제가 되겠지만 그보다는 편견과 조작하고 싶은 욕망이 그렇게 만든다. 즉, 애초부터 불평등이 프로그램되어 있을수 있다는 말이다. WMD, 이책에서 저자가 말하는 대량살상 수학무기가 바로 그런 경우다.





수학이 어떻게 대량살상하는 무기가 되었을까? 

수학 모형은 본질적으로 과거의 패턴이 반복될것이라는 가정이기 때문에 한계가 있는데도 마치 앞날을 다보여주는 것처럼 이용되고 있기 때문이다.





과거의 패턴을 이용하는것은 때로는 잔인하다. 만약 학자금 대출을 받아 졸업했다면 알고리즘은 또 대출을 받을거라 분석하고 대출 상품을 집중적으로 권할것이다. 즉, 다른이보다 대출 유혹을 더 받는다는 것이다.





잔인한데도 과거 패턴을 이용하는것은 순전히 효율성 때문이다. 범죄 예방 프로그램을 예로 보자. 불심검문을 할때 모든 지역을 대상으로 하기 보단 과거 범죄율이 높았던 지역만을 대상으로 하는것이 효율성 측면에서는 더 좋다. 더 적은 인력으로 더 많은 잠재 범죄자를 확인할 수 있으니 말이다. 하지만 범죄율이 높다는 것은 불심검문을 그만큼 많이 했다는 얘기도 된다. 다시 말해 과거 범죄율 때문에 더 많은 확인을 받게 되고 이는 다시 범죄율이 더 증가하는 악순환이 반복된다.


특히 알고리즘이 가난한 동네에서 많이 일어나는 경범죄를 다룬다면 이 지역 사람들은 불심검문으로 범죄자가 되어 취업이나 각종 사업에서 불이익을 받을 가능성이 커질 것이다.





물론 모든 인공지능 알고리즘이 수학무기가 된다는것은 아니다. 공공데이터를 이용하여 교통체증을 줄이는것은 누가 봐도 좋은일이기 때문이다. 그렇다면 수학무기는 뭐가 다른것일까? 그것은 대리 데이터다.


공공데이터는 직접적인 데이터다. 즉, 데이터 그 자체만으로도 교통체증을 파악할수 있다. 하지만 범죄율 하나만으로는 한 사람의 범죄를 파악할 수 없고 어림짐작만 할 수 있을뿐이다. 어림짐작으로 한사람의 인생을 바꾼다면 누가 봐도 나쁜일이지 않는가.





애석하게도 대리 데이터는 알고리즘에 많은 부분을 차지하고 있다. 사람의 일은 너무나도 복잡하고 영향을 여기저기서 받기 때문에 직접 데이터가 존재하기 힘들고 그나마 있는 데이터도 개인 정보법에 의해 나라에서 엄격하게 관리하기 때문이다. 그러니 사설업체에서는 대리데이터를 사용할수 밖에 없다.


개인 한사람이 아닌, 개인이 속한 부류를 찾아 나를 파악한다는 말이다. 내가 아무리 공부를 잘하고 돈 벌 능력이 있어도 가난하다고 알려진 곳에서 태어났다면 난 무능한 사람이 되는 것이다. 현대판 신분제가 아닐수 없다.





예전에는 사람들의 편견속에서 그래 왔다면, 이젠 인공지능으로 부터 확정을 받은 것이다. 더군다나 수학적으로 증명되었으니 편견이라고 오해라고 하소연 할수도 없게 되었다.


우리는 앞으로 사람을 닮은 인공지능, 아니 편견까지 닮은 인공지능을 상대해야 한다. 인공지능의 최종 목표는 사람이 되는것이기 때문이다. 


그렇다면 어떻게 상대해야 할까? 알고리즘을 투명하게 관리하는수밖에 없다. WMD의 가장 큰 문제점은 평가를 받는 우리들이 그 알고리즘에 대해 피드백을 취할 수 없는 점이다.


알고리즘의 원리는 무엇이며, 영향을 받는 요소는 어떻게 수집되며, 나와 관련된 정보는 제대로된 정보인지 투명하게 공개되어야 한다. 그리고 누구든지 이의를 제기하고 고칠수 있어야 한다.


강력한 무기를 사용할때는 도덕성과 민주주의가 필요하다. 알고리즘을 감시하자.


수제앱장인


 

 

CEO

Developer

S/W Enginner

고영진


실패만 하고 있어도 꿈을 포기하지 않는 남자
제가 직접 경험하고 습득한 지식을 위주로 올릴게요




사업자 정보 표시
고영진모바일 | 고영진 | 서울특별시 관악구 낙성대동 서울대연구공원 SK상생혁신센터 | 사업자 등록번호 : 109-11-82076 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2010-서울강서-0217호 | 사이버몰의 이용약관 바로가기
개발/ios 2018.07.30 15:07

스레드에서 반복문으로 UI를 변경할때 주의할점



내가 만든 스레드에서 UI를 바꿀수 없다는것은 누구나 알것이다. 물론 젖먹이 개발자 시절에 난 몰랐다...


어잿든 내 스레드에서 UI를 바꿀려면 메인스레드를 호출해야 한다. ios 에서는 DispatchQueue.main.async 이 그 역활을 한다.


짐작했겠지만 메인스레드는 새로 만들어지는게 아니므로 당연히 동기적으로 움직인다. 


최근까지도 이 사실을 자주 망각했다. 바로 반복문에서 메인스레드를 호출할때였다.


내 스레드에서 메인스레드를 반복문으로 돌릴때는 서로가 따로 놀기 때문에 (내 스레드와 메인스레드가 서로 비동기라서) 메인스레드에서 UI가 아직 변경되지도 않았는데 내 스레드에서 또 호출해 버린다. 이렇게 되면 버벅거리는 현상이 발생한다.


테스트할때서야 버벅거림을 발견하고 짜증내다 아... 하고 숙연해 진적이 한둘이 아니었다.


아래를 보면 스레드에서 ui를 10번 갱신한다.

하지만 apply변수를 뺀다면 10번이 다 갱신 되지 않고 중간에 몇번은 건너뛰어 결국 일부만 실행되는것 처럼 보일것이다.



//스레드 시작

Thread(target: self, selector: #selector(runLoop), object: nil).start()



//스레드 실행 함수

@objc func runLoop() {

    var apply = true

    var count = 0

        

    while count < 10 {

        //메인스레드에서 작업이 완료되었을때만 실행

        if apply {

            //시작

            apply = false

            count += 1

                

            DispatchQueue.main.async {

                //ui 변경

                //...

                setNeedsDisplay()

                    

                //완료

                apply = true

            }

        }

    }

}




쉽게 말해 동기화를 해야 한다는 말이다.


알면서도 실수할수 있으니 항상 유념하자.



수제앱장인


 

 

CEO

Developer

S/W Enginner

고영진


실패만 하고 있어도 꿈을 포기하지 않는 남자
제가 직접 경험하고 습득한 지식을 위주로 올릴게요





사업자 정보 표시
고영진모바일 | 고영진 | 서울특별시 관악구 낙성대동 서울대연구공원 SK상생혁신센터 | 사업자 등록번호 : 109-11-82076 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2010-서울강서-0217호 | 사이버몰의 이용약관 바로가기
TOTAL 69,579 TODAY 8