딥러닝 초보를 위한 쉬운 설명 – Deep learning

딥러닝 (Deep Learning)의 쉬운 이해

딥러닝은 “깊은 학습”이라는 뜻이고 “심화학습”이라고 번역합니다만 원래 뜻과는 잘 안맞고 멋이 없어서 그냥 “딥러닝”이라고 부릅니다.

딥러닝은 신경망(뉴럴 네트워크, Neural Network)이라고 하는 인공지능 구현 방식이 있는데 그 것의개량형입니다.

딥러닝은 신경망의 다른 별명이고 개량된 신경망을 뜻하는 단어입니다.

그래서 딥러닝을 이해하려면 신경망에 대해서 무조건 알아야 합니다.

신경망은 인간의 뇌구조를 모방해서 만든 인공지능을 만들기 위한 설계 구조이자 방식입니다.

신경망은 아주 예전에는 전기, 전자회로로 구현했고 요즘은 다 컴퓨터 소프트웨어로 구현합니다.

신경망을 개량하기 위해서 직접 만들기도 하고 기조의 구조를 고쳐서 인공지능 모델을 만들기도 합니다.

그래서 프로그래밍을 하긴하지만 프로그래밍 양은 많지 않고 만들어진 소프트웨어 골격을 재배열하고 데이터를 가공하거나 변환해서 넣고 결과를 확인하기 위한 것이 대부분입니다.

어쨌든 인공지능을 만들기 위한 절차의 집합입니다.

딥러닝과 일반 신경망의 차이

딥러닝과 일반 신경망의 차이는 딥러닝이 신경망의 구조에서 망 내의 신경 층들 수가 더 많고 길게 할 수 있다는 차이가 있습니다.

신경망이 깊으면 더 정교한 판단을 하는 인공지능을 만들 수 있습니다.

그럼 딥러닝이 나오기 전에는 깊은 구조 (복잡한 구조)의 신경망을 못 만들었다는 말인가? 라고 셩각하실텐데 그렇습니다.

딥러닝 이전에도 깊은 구조의 신경망을 만들 수는 있었지만 만들어진 신경망이 멍텅구리가 되기 때문에 결과적으로는 만들 수 없었습니다.

깊은 구조의 신경망을 만들 수 없었던 이유는 미분 때문

많은 이유가 있지만 가장 큰 이유는 미분으로 인한 문제입니다.

신경망에서 미분은 크게 2가지 문제를 만듭니다.

GPGPU로 대량의 계산을 더 빨리 처리하게 됨

신경망은 파라미터 최적화라는 작업을 합니다.

파라미터 최적화는 신경망 내에 있는 숫자값들을 학습데이터에 맞게 조금씨 고쳐서 바꿔가는 작업입니다.

파라미터 최적화를 위해서 대수학에서 하는 미분을 해야하는데 아주 많이해야 합니다.

미분을 많이해야 하면 계산할 것이 많아져서 컴퓨터가 힘이듭니다.

이건 이런 종류녜 단순 계산을 한 번에 많이 할 수 있는 GPGPU의 발전으로 해결되었습니다.

그래디언트 소실 문제 해결

그 다음은 미분이 반복되면서 파라미터의 숫자값들이 모두 0에 점점 가까워지는 문제를 해결했습니다.

이 문제를 그래디언트 배니싱이라고 부릅니다.

파라미터가 모두 0이 되거나 0에 가까우면 인공지능이 바보가 되는데 그 이유는 신경망의 층이 매우 많을 때 미분이 반복되기 때문입니다.

0이 가까워지는 이유는 미분의 대상이 되는 함수인 시그모이드라는 신경망에서 애용했던 함수의 특성때문입니다. 딥러닝에서는 이 함수를 렐루(ReLU)라는 미분해도 숫자가 계속 작아지지 않는 함수로 바꿔서 해결합니다.

알고보면 엄청 간단하지만 해결하는데 엄청나게 오랜 시간이 걸린 것입니다.

딥러닝 책과 자료는 서점과 온라인에 많이 있습니다. 자세한 자료는 그걸 참조하세요.

Selenium Grid 셀레니엄 그리드

셀레니엄(Selenium)은 웹서비스를 테스트하기 위해 사용하는 오래된 자동화도구입니다.

웹서비스를 테스트하기 위해서는 웹브라우저를 사람대신 작동하게 해서 접속하고 클릭하고 페이지를 이동하는 등의 작동을 시키고 결과를 본 후에 제대로 작동하는지 측정합니다.

이걸 위해서 필수적으로 3가지가 필요합니다.

  • 웹브라우저
  • 웹브라우저를 자동으로 핸들링하는 웹드라이버
  • 웹드라이버를 핸들링하기 위한 컴퓨터언어와 패키지

셀레니엄은 위에서 3번째것을 지원합니다.

웹브라우저와 웹드라이버는 웹브라우저를 만드는 곳에서 제공합니다.

셀레니엄의 용도

웹서비스가 제대로 작동하는지 화인하는데 씁니다.

데이터를 크롤할 때 씁니다.

데이터클 크롤할 때 셀레니엄을 쓰는 이유는 Javascript를 사용해서 동적으로 콘텐츠를 디스플레이하는 사이트때문입니다.

이런 사이트의 데이터를 크롤하려면 접속하는 웹클라이언트에 자바스크립트를 구동시키고 화면을 렌더링할 수 있는 엔진이 있어야 하는데, 이게 쉽게 만들 수 있는 물건이 아닙니다.

그래서 기존의 웹브라우저를 자동화해서 움직이게해서 테스트 용도로 사용하게 하는 방법이 생겨났는데 그중에 가장 오래되고 유명한 것이 셀레니엄입니다.

그리고 이런 사이트의 데이터를 자동으로 가져가기 위해서 역시 셀레니엄을 쓰게 됩니다.

셀레니엄의 단점

구동하게 하기 위해서 자원을 많이쓰는 웹브라우저를 사용해야합니다.

쉡게 말하면 셀레니엄은 매우 무겁습니다.

셀레니엄의 장점

앞서 말했듯이 셀레니엄을 쓰면 동적 생성되는 콘텐츠를 테스트하거나 크롤할 수 있습니다.

React나 Vue.js 같은 것들로 만들어진 웹페이지에도 쓸 수 있습니다.

셀레니엄 그리드는 뭔가?

  • 셀레니엄을 설치하면 여러가지 이상한 패키지를 서버 또는 랩탑에 설치해야 합니다
  • 그리고 그냥 쓰게 되면 서버의 자원을 순간적으로 많이 쓰게 됩니다.
  • 쓰고나면 찌꺼기 파일을 많이 만들어 놓습니다

그래서 셀레니엄을 여러 서버에 미리 설치해서 클러스터를 만들어놓고 그걸 필요할때 가져다 쓸 수 있습니다.

그런 환경을 만들어 주는 것을 셀레니엄 그리드입니다.

아래 사이트에서 설치법을 볼 수 있습니다. 비교적 쉽습니다.

https://www.selenium.dev/documentation/grid/

그리고 셀레니엄 서버라는 것이 예전에 존재했었는데 그 후속으로 나온 버전이 셀레니엄 그리드입니다.

셀레니엄 그리드의 장점

  • 차원이 더 필요할 때 수평 확장이 쉽습니다.
  • 자원을 효율적으로 사용할 수 있습니다.
    • 여러 서버가 셀레니엄 그리드 클러스터로 부터 필요할 때 자원을 가져다 쓰기 때문입니다

Last Touch Attribution, LTA 모델

Last Touch Attribution은 광고 마케팅에서 사용하는 용어입니다.

데이터 기술로는 애드테크(Ad tech), 마테크(MarTech)에서 볼 수 있는 용어입니다.

번역할 수 있는 적당한 한국말이 아직 없어 그냥 “라스트 터치 애트리뷰션”이라고 부릅니다.

Last Touch Attribution이란?

간단하게 설명하면

광고주가 여러 광고매체에 광고를 했는데 고객이 전환을 만들었을 때 한 고객이 여러 매체를 통해 들어왔더라고 전환이 발생하기 직전인 가장 마지막에 고객이 접촉한 매체(광고수단)에만 그 기여를 인정하겠다는 것을 말합니다.

자세히 설명하면

짧고 작게 볼 때 광고의 목적은 전환을 발생시키는데 있습니다. 크게 보면 회사의 매출을 올리는데 있고 비즈니스를 성장시키는데 있습니다만.

전환은 구매, 회원가입, 상담신청하기, 앱 설치하기, 사전구매 신청하기 , 구독하기 등과 같은 광고주의 비즈니스에서 매출과 직접 관련이 있거나 광고주가 광고를 통해서 고객으로부터 얻고 싶은 최종 액션을 말합니다.

전환을 발생하기 위해서 어떤 매체가 파급력이 좋을 지, 효율이 좋을지 모르고 또 잠재 고객이 어느 특정 매체에 몰려 있거나 하지 않기 때문에 여러 매체를 통해 광고를 진행합니다.

매체는 구글키워드광고, 구글디스플레이광고, 페이스북광고, 인스타그램광고, 유튜브광고, 이메일, 카카오복 광고 같은 것들을 말합니다.

여러 매체를 통해 여러 캠페인을 진행하면 동일한 제품 또는 제품 카테고리에 대해서 동일한 사람이 여러 매체에서 광고를 보고 각각 클릭을 해서 제품을 살펴보고 구매의사가 있다면 구매를 하게됩니다.

이때 1명의 고객이 여러 매체에서 광고를 모두 보고 클릭을 했지만 구매 직전에 마지막에 클릭한 매체의 기여만 인정하고 나머지는 무시하는 것이 Last Touch Attribution입니다.

이것은 마지막에 클릭한 매체에서 보여졌던 광고가 전환에 가장 큰 영향을 줬다고 그 영향이 결정적이었다고 간주하는 것입니다.

Last Touch Attribution 모델의 문제점

상식적으로 볼 때 이 것은 매체들에게는 매우 불리합니다. 고객이 어느 시점에 물건을 살지를 알아서 그 직전에 광고를 보여주고 클릭하도록 만들어야 하는데 쉬운 것이 아닙니다. 그리고 앞서 발생햏던 모든 클력을 무효로하고 마지막 클릭만 전환에 기여했다는 것은 상식적으로도 말이 되지 않습니다.

Last Touch Attribution 모델을 쓰는 이유

광고생태계에서는 대부분의 MMP(Mobile Measurement Partner, 모바일 앱에서 광고 성과를 추적해주는 서비스)나 GA등은 이 모델은 기본으로 기여도를 산출하고 있고 광고주들도 이 모델은 기본으로 하고 있습니다. 물론 다른 기여도 모델도 지원하긴 하지만 기본으로 지원하는 것을 그냥 대부분 쓰기 때문에 다른 모델을 쓰는 경우는 많지 않습니다.

또 다른 이유는 이게 계산하기 편하고 쉽기 때문입니다.

즉 다른 기여도 모델에 비해서 데이터프로세싱에 드는 리소스가 적고 덜 복잡하기 때문입니다. 보통 마케팅을 집행하는 마케팅부서는 IT부서가 아니고 IT지원을 받지 못하거나 받지 않으려고 하는 경향이 강해서 데이터프로세싱을 잘 하지 못합니다. 그래서 비교적 데이터프로세싱이 편한 방법을 쓰거나 기본으로 프로세싱까지 해서 수치를 산출해 주는 Last Touch Attribution을 쓰게 됩니다.

광고주 입장에서는 속 편한 것입니다. 광고주는 갑이고 매체들은 을이기 때문에 광고주가 마지마 터치만 인정하겠다고 선언하면 그뿐입니다. 기여도를 올리고 싶다면 전환직전의 마지막 클릭을 만들면 된다고 말하고 그렇게 하라고 하면 됩니다.

기여도가 낮은 매체는 어떻게 되는가?

기여도가 낮은 매체는 광고 효율이 좋지 않기 때문에 광고주가 광고비를 줄일 때 가장 먼저 광고를 진행하지 않고 빼버리는 대상이 됩니다. 특정 매체의 경우 First Touch가 아주 높다면 그런 매체는 이 모델로 판정하게 되면 기여도가 매우 낮기 때문에 빠지게 됩니다.

그래서 Last Touch를 많이 만들지는 못했지만 First Touch나 Middel touch가 많은 매체는 이 모델이 불공평하다고 주장하고 Last Touch가 좋은 매체는 Last Touch가 가장 좋다고 주장합니다.

업종과 물건에 따라 다른 Last Touch

Last Touch는 업종, 물건의 종류, 물건의 가격대, 구입하는 고객의 구성에 따라 다릅니다. 그렇기 때문에 광고주의 입장에서는 자신들이 판매하는 물건 또는 비즈니스의 특성과 고객군에 대해 제대로 이해하고 있어야 하고 그에 따라 어떤 Touch Model을 쓸지와 어던 매체가 좋은지도 판단해야 합니다.

단순하게 어떤 것이 가장 좋으니 그것만 쓰면 된다고 말할 수눈 없습니다.

필요한 데이터 기술

앞서 말했듯이 last touch attribution은 아주 쉽습니다. 전환 이 전에 가장 마지막에 고객이 타고 들어온 광고매체가 어딘가를 찾아내서 카운트해주면 됩니다.

RDB, 빅데이터플랫폼, 실시간 데이터처리 플랫폼으로도 매우 쉽습니다. 그 외에 통계 기술, 기계학습, AI는 전혀 필요하지 않습니다.

간단하다고는 말하지만 엑셀로 하려면 매우 복잡합니다. 그래서 데이터프로세싱 기술이 전혀 필요 없다고는 할 수 없습니다. 물론 데이터가 아주 많지 않다면 엑셀로 할 수는 있습니다.

Multi Touch Attribution 모델

하지만 최근에는 이 모델이 정말 효율좋은 광고 매체를 골라내지 못한다는 당연한 문제점 때문에 Multi Touch Attribution Model을 사용하는 경우가 늘고 있습니다.