_3_main
반응형
LIST

결정 트리 (decision tree) 라는 것이 있음.

기계 학습 (machine leanring) 분야의 고전적인 알고리즘 들 중의 하나임.

결정 트리는 분류 문제에 강함.

분류 문제는 쉽게 말해서 MBTI  구분이라고 할 수 있음.

예를 들어, "차분하고 신비한 분위기를 풍기는 성격으로, 다른 사람에게 의욕을 불어넣어 주는 타입"이라고 하면 "당신은 INFJ 네요"라고 하는 것임.

결정 트리가 분류 문제에 있어 고전적이지만, 이것에서 여러 가지 성능 좋은 방법들이 나왔음.

따라서, 결정 트리부터 잘 알아두어야 함.

사실 이 포스트에는 XGBoost라는 결정 트리를 이용한 성능 끝판왕을 설명하려고 하였음.

그런데, 기본에 좀 더 충실하기 위해서, 결정 트리부터 살펴보기로 함.


결정 트리는, 질문에 대해 답을 하다보면 어느새 분류가 되어 버리는 식으로 동작함.

답은 예 또는 아니오 로만 함.

이런 결정 트리가 있으면 직관적이고 쉽게 분류 문제를 해결할 수가 있음.

결정 트리에 대해서 예제를 이용하면 좀 더 쉬운 이해가 가능한데, 가장 많이 사용되는 데이터가 붓꽃 데이터임. 

 

붓꽃은 위의 사진과 같이 3 종류, 버시컬러, 버지니카, 그리고 세토사 로 나뉠 수 있음.

길 가다가 이 중에서 하나를 보고 구분하기가 쉽지는 않을 것 같음.

그렇지만, 꽃받침(sepal)과 꽃잎(petal)의 길이와 폭만 알면 쉽게 구분할 수 있음.

이런 길이와 폭 정보를 이용해서 붓꽃 분류를 위한 결정 트리를 만드는 예제가 아주 유명함.


이 붓꽃 데이터는 아주 쉽게 구할 수 있음.

웹에서 "붓꽃 데이터셋 (iris dataset)"이라고 검색해도 되지만 파이썬의 science-kit learn 패키지에 아예 내장되어 있음.

붓꽃 데이터셋에는 3가지 붓꽃 종류에 대해 각 50개씩, 총 150개의 데이터가 들어 있음.

1개의 데이터는 꽃받침과 꽃잎의 길이와 폭, 총 4개 값임. 

그리고 그 꽃이 3가지 붓꽃 품종 중 어느 것인지 기록되어 있음.

이 데이터를 이용해서 결정 트리에 대해 설명하는 예제들이 차고 넘침.

이렇게 교육적으로 유용한  붓꽃 데이터셋은 누가 만들었을까?


 

영국의 생물학자 로널드 피셔(위 사진)가 1936년에 수집했다고 알려져 있음.

2025년 기준으로 거의 90년 전에 만든 데이터임.

로널드 피셔는 생물학자 이긴 한데, 통계학 응용이 주 연구분야 였던 것 같음. 

여러 가지 생물학 변종들을 쉽게 구분하기 위한 통계적 방법을 연구하고 있었음.

그러다가 한 가지 방법을 생각해 냈는데, 이게 잘 되는 것을 보여주기 위해서 붓꽃 데이터셋을 사용한 것임.

그런데, 반전이 있음.


 

붓꽃 데이터의 원작자가 따로 있었음.

에드가 앤더슨(위 사진)이라는 식물학자가 수집한 것임.

이 사람은 붓꽃 변종을 쉽게 구분할 수 있는 정량화된 방법을 연구하면서, 붓꽃 데이터를 만든 것임.

이제 상황을 재구성해 보자면, 1930년대에 생물학과 식물학 연구자들이 통계학을 자신들의 연구에 응용하는 것이 트렌드 였던 것 같음.

생물학과 식물학에서는 새로운 생물 개체가 발견되면, 기존 것 중의 하나인지, 새로운 것인지 분류하는 것이 중요한 일이므로, 통계학이 유용한 수단이었을 것 같음.

그래서, 에드가 앤더슨이 자신이 모은 붓꽃 데이터에, 통계학을 적용해서 분류하는 것을 시도하면서, 이 데이터가 알려졌던 것 같음.

이후, 로널드 피셔가 새로운 통계학적 방법을 만들어내고, 이걸 어디에 테스트 해보면 좋을까 하다가 마침 붓꽃 데이터가 있기에 여기에 적용해 본 것임.

오늘 날, 붓꽃 데이터는 결정 트리 공부하는 사람들에게는 교과서 같은 데이터 임.

사족: 에드가 앤더슨 씨가 당시 어느 정도 유명한 식물학자 인 것 같아서, 150개의 붓꽃 길이를 재는 일은 본인이 하지 않고, 조수를 시켰을 것 같음.


붓꽃 데이터를 직접 만든 사람보다, 로널드 피셔가 원작자로 알려져 있는 것은 역사의 아이러니임.

정반대되는 사례도 있음.

1940년, 미국 캘리포니아에 사는 맥도날드 형제가 만든 햄버거가 있었음.

오늘 날, 우리가 아는 그 맥도날드임.

그런데, 이 버거는 당시 동네에서만 유명한 햄버거 였음.

1954년 레이 크록이 글로벌 프랜차이즈로 만들어서 전 세계적으로 유명하게 됨.

여전히 맥도날드 이름을 사용하고 있음. 

사람들이 레이 크록은 잘 모름.


공부 하려다가 샛길로 빠지는 일이 종종 있음. 

이 포스트는 배보다 배꼽이 컸음.

반응형
LIST

AI 때문에 요즘 개발자들 채용이 많이 줄고 있음.

개발자 중에서도 신입 개발자 채용 기회가 대폭 줄고 있음.

AI로 대체 가능한 자리이기 때문임.

예전에는 웹과 앱 관련해서 프론트엔드, 백엔드 등 다양한 채용 기회가 있었음.

최근에는 어느 정도 경력있는 개발자가 AI 툴을 사용해서 대부분의 코드를 작성하는 것이 자리를 잡아가고 있음


채용 기회가 늘어나고 있는 직군도 있는데,  AI engineering 임.

예전부터 ML engineering 직군이 있었는데, 최근 들어 AI engineering이라는 용어가 많이 보임.

둘은 비숫해 보이지만, 차이가 있음.

간단히 말하자면, 좀 더 고급 직군이 ML engineering이고, 그보다 조금 하위 직군이 AI engineering임.

아래에서 소개하는 책에서 이러한 차이를 자세히 다루고 있음.

이 책은 2025년 1월에 출간되었고, 저자는 인공지능 분야에서 개발 경력을 가졌음.

지금부터는 책에서 얘기하고 있는 AI engineering에 대한 소개임.

미국에서는 채용 공고를 낼 때, job description이라고 해서 업무를 자세히 기술함.

여기에, AI engineering이라는 용어가 나오면, 대충 이 책에 나온 다음 내용이라고 생각하면 되겠음.


AI engineering 직군은 3가지 기술 스택을 갖추어야 함.

스택이라고 하였으므로, 상하위 개념이 있고, 하위 기술에 상위 기술이 얹혀지는 형태라고 생각하면 되겠음.

3가지 기술 스택은

  • applicaiton development
  • model development,
  • infrastructure

Application development

가장 최상위 스택으로 인공지능 모델을 이용한 응용 서비스를 만드는 일임.

기존 인공지능 모델을 이용하는 것이지, 신규 개발하거나 수정하지는 않음.

우리가 ChatGPT를 그대로 사용하지, 모델 자체를 수정하지 않는 것을 생각하면 되겠음.

대신, 응용 서비스의 요구사항이 잘 충족될 수 있도록 하는 것임 목적임.

예를 들어, ChatGPT 기반 서비스라면, 좋은 프롬프트와 컨텍스트가 ChatGPT에 전달될 수 있도록 중간에서 처리하는 역할이라고 보면 되겠음.

Model development

보다 정확한 명칙은 model adaptation이 맞음.

모델을 개발하거나, 수정하지 않고, 응용 서비스에 맞도록 fine-tuning 정도 한다고 보면 되겠음.

Fine-tuning은 약간의 모델 훈련이 들어감.

이 때 중요한 것이 응용 서비스에 특화된 데이터를 가지고 훈련시켜야 한다는 것임.

따라서,  응용 서비스 분야에 대한 지식이나, 그 분야 데이터를 잘 다룰 수 있는 data engineering 기술이 필요함.

예를 들어, 인공지능 세무 서비스라고 하면, 세무에 대한 지식이 있어야, 이 분야의 AI engineering을 할 수 있음.

또 하나 중요한 능력이 inference optimization 능력임. 

인공지능 모델이 작동할 때 소요되는 시간과 자원을 최적화하는 것을 inference optimization이라고 함.

가장 흔한 방법이 양자화 (quantization) 임.

쉽게 말하면, 32비트 실수를 사용하는 인공지능 모델을 8비트 정수를 사용하도록 변환하는 것임.

Infrastructure

가장 밑바닥 기술이 모델을 실행하고, 데이터를 관리하고, 서비스를 모니터링 하는 것임.

요즘은 자동화가 많이 되어 있고, 클라우드 서비스에서 많이 담당해줘서, 예전만큼 힘든 일은 아님.


여기까지 보면 AI engineering이 이름만큼 힘들어 보이지는 않음.

ML (machine learning) engineering 직군과 비교해 보면, 좀 더 업무가 명확해 보임.

ML engineering 직군에서는 모델의 개발 및 훈련 업무가 들어감. 

좀 더 응용 서비스에 특화된, 기존에 없던 모델을 새로 만들어서, 그 분야 만의 데이터로 훈련시켜 최적의 성능을 내도록 만들 수 있는 기술이 필요하다는 얘기임.

그런데, AI engineering은 ML engineering 보다 크고, 자원 소요가 많은 모델을 다룸.

모델이 크면 좀 더 여러 가지 일에 사용할 수 있는 일반성이 크기 때문임.

예를 들어, ChatGPT 모델이 엄청나게 크기 때문에, 코딩, 세무, 인생상담, 단순 검색 등 여러 가지 용도로 사용할 수 있는 것임.

ChatGPT같은 LLM 들이 현재 AI engineering에서 가장 많이 도입하고 있는 모델임. 

그래야,재훈련없이 응용 서비스 별로 가져다 쓸 수 있기 때문임.


AI engineering과 ML engineering은 옷 수선소와 맟춤 양복점으로 비유할 수 있음.

옷 수선소는 고객이 맡긴 기성복에서, 잘 안 맞는 부분만 살짝 고쳐주는 역할을 함. AI engineering은 유명 인공지능 모델(기성복)을 가져다가 살짝 고쳐서 사용함.

ML engineering은 고객이 원하는 옷을 필요하면 처음부터 만들 수도 있음. 그렇지만, 대충 유행하는 옷이 있기 때문에 큰 디자인은 가져오고, 세부적인 부분만 재단해서 옷을 만듬. 


AI engineering이 ML engineering보다 좀 더 있어 보이는 이름이지만, 기술적인 면에서는 ML이 한 수위라고 느껴짐. 

 

반응형
LIST

+ Recent posts