# 나의 AI와 ML에서의 25년 모험

> Clean Markdown view of GeekNews topic #18610. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18610](https://news.hada.io/topic?id=18610)
- GeekNews Markdown: [https://news.hada.io/topic/18610.md](https://news.hada.io/topic/18610.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-07T09:53:09+09:00
- Updated: 2025-01-07T09:53:09+09:00
- Original source: [austinhenley.com](https://austinhenley.com/blog/25yearsofai.html)
- Points: 19
- Comments: 1

## Summary

현재 CMU 부교수인 저자는 AI/ML 분야에 처음부터 관심이 있었던 것은 아니지만, 업무에 필요한 도구를 사용하면서 자연스럽게 이 분야에 발을 들이게 되었습니다. 25년간 참여했던 주요 AI/ML 프로젝트 회고를 통해서 생각의 변화를 따라가 봅니다. 초기에는 간단한 게임 개발을 통해 프로그래밍을 시작했으며, 대학과 대학원 시절을 거치면서 AI와 ML의 다양한 이론과 실습을 경험했고, 이후 교수와 Microsoft에서의 연구를 통해 지능형 사용자 인터페이스와 대규모 언어 모델을 활용한 프로젝트를 진행하며, 현재는 독립적으로 AI 도구 개발에 몰두하고 있습니다.

## Topic Body

- AI/ML쪽에서 일할 의도는 전혀 없었음  
- 그저 업무에 필요한 도구를 사용하다 보니 자연스럽게 AI나 ML을 사용하게 됐고, 결국에는 이 분야에 발을 들이게 됨 (CMU 부교수)  
- 새해를 맞아 2000년으로 돌아가 참여했던 주요 AI/ML 프로젝트를 회고해 봄   
  
### If문과 랜덤 숫자: 초기 프로그래밍 경험  
  
- **비디오 게임으로 시작**:  
  - 타마고치에서 영감을 받아 VB6로 가상 펫 게임 개발 시도.  
  - 타이머와 조건문을 활용해 간단한 논리 구현:  
    - 10초마다 배고픔 수치 증가.  
    - 배고픔이 특정 수준을 넘으면 3초마다 건강 감소.  
    - 건강이 0이 되면 펫이 쓰러짐.  
  - 결과: 단조롭고 재미없는 게임.  
- **고등학교 시절 게임 개발**:  
  - 2D 우주 슈팅 게임 개발:  
    - 플레이어가 적의 파도(waves)를 방어하며 파워업을 수집.  
  - 적의 등장 패턴은 랜덤 숫자와 게임 플레이 통계(플레이 시간, 발사 횟수, HP 등)를 활용한 긴 `if`문으로 구현.  
  - 결과:  
    - 게임이 약간 동적이고 예측 불가능하게 느껴짐.  
    - 그러나 흥미가 오래 지속되지 않아 플레이어들이 금방 그만둠.  
- **AI 개념 탐구**:  
  - 2000년대 중반, *Programming Game AI by Example* 책을 구매해 게임에 AI를 구현하는 방법 학습.  
  - 초기에는 활용하지 못했으나 이후 프로젝트에서 큰 도움이 됨.  
- 이 시기의 경험은 더 복잡하고 흥미로운 게임 메커니즘을 실험하는 데 기반이 되었음  
  
### 상태 머신과 고차 함수: 대학 시절 게임 개발  
  
- **게임의 진화**:  
  - 대학 시절, 게임 개발 수준을 한 단계 높여 수백만 명이 플레이한 게임 제작.  
  - 일부 게임은 수익 창출까지 성공.  
  - 프로그래밍 실력이 성숙해지면서 책에서 배운 내용을 실전에 활용 가능.  
- **기술 적용**:  
  - **유한 상태 머신(Finite State Machine)**:  
    - 적의 행동 패턴 구현에 활용.  
  - **팩토리 패턴**:  
    - 오브젝트 생성 및 관리.  
  - **고차 함수(Higher-order Functions)**:  
    - 적과 무기의 동작을 조합 가능하게 설계.  
    - 예시:  
      - 무기는 좌우 25도 진폭으로 진동하며 좁은 원뿔 형태로 탄환을 발사.  
      - 탄환은 근처 목표물에 약간 유도되고, 1% 확률로 리코셰(튕김) 발생.  
- **게임의 생동감**:  
  - 게임 상태와 플레이어 입력을 기반으로 동적(dynamism) 요소를 점진적으로 추가.  
  - 무작위성과 조합성을 활용해 변화 추가.  
  - 이러한 접근법은 적 행동뿐만 아니라 스프라이트, 파티클 이펙트, 사운드 효과, 탄환, 애니메이션 등 게임 전반에 레이어 방식으로 적용.  
- **결과**:  
  - 게임이 더 생동감 있고 재미있어짐.  
  - 그러나 이는 AI가 아니라, 잘 설계된 `if`문과 함수 호출의 조합일 뿐이라는 깨달음.  
- 게임이 "살아있는" 듯한 느낌을 줄 수 있었으나, 이 단계에서는 여전히 수작업으로 설계된 논리와 함수의 활용임을 깨달음.  
  
### 일차 논리, 지식 표현, 서포트 벡터 머신, 신경망: 대학원 초기 경험  
  
- **석사 과정 시작**:  
  - 졸업 후 마감 직전에 석사 과정에 등록.  
  - 선택할 수 있는 수업이 제한적이었고, AI와 신경망 강의를 수강.  
  - 원래 희망했던 컴파일러 강의 대신 선택한 강의들에 실망:  
    - 실습이나 구현 없이 고차원적 이론 중심.  
    - 정의를 두고 많은 논의가 이루어짐.  
- **AI 강의**:  
  - _Artificial Intelligence: A Modern Approach (Third Edition)_ 교재 사용.  
  - 계획, 에이전트, 일차 논리, 지식 표현 등의 개념을 학습.  
  - 문제를 사고하는 새로운 어휘를 배웠지만 실제 적용에는 어려움.  
- **신경망 강의**:  
  - 퍼셉트론, 서포트 벡터 머신(SVM), 피드포워드 네트워크, 홉필드 모델, 역전파(backpropagation) 등 이론 학습.  
  - 실습에 대한 명확한 지침 부족:  
    - "MATLAB 패키지를 찾아보라"는 교수의 답변에 좌절.  
- **저대역폭 화상 채팅 프로그램 개발**:  
  - OpenCV로 얼굴 감지 및 영역 추출:  
    - 입꼬리 상태, 왼쪽 눈썹의 위치, 오른쪽 눈이 열려 있는지 등을 분류.  
    - 수백 개의 라벨링된 얼굴 이미지를 데이터베이스에서 수집.  
    - 분류된 이진 상태를 소켓을 통해 전송, OpenGL로 아바타 렌더링.  
  - **결과**:  
    - 조명 변화에 민감하고, 파라미터 수정이 어려우며, 학습에 오랜 시간이 소요.  
    - OpenCV 사용이 까다롭고 프로그램 수정이 번거로움.  
- **성과**:  
  - 여러 시행착오를 통해 많은 것을 배움.  
  - 2013년 1월, 초기 데모 영상을 업로드하며 공유:  
    - [데모 영상](#)은 비록 아마추어적이지만 1000회 이상의 조회 수 기록.  
- 이 시기는 이론을 실제로 구현하고 문제를 해결하는 방법을 배우는 중요한 성장의 과정이었음  
  
### 의사결정트리, 클러스터링, 추천 알고리즘: 박사 과정에서의 경험  
  
- **연구 목표**:  
  - 코드 편집기의 로그 데이터를 분석해 다음과 같은 문제 해결 시도:  
    - 프로그래머가 코드에서 막히거나 길을 잃었는지 식별.  
    - 프로그래머가 다음에 탐색할 파일 예측.  
    - 관심 있는 코드를 정확히 추천.  
- **활용된 통계적 방법**:  
  - **C4.5 알고리즘**: 의사결정트리 생성.  
  - **K-평균(K-means) 및 DBSCAN**: 이벤트 클러스터링.  
  - **Apriori 및 협업 필터링**: 이벤트 간 연관성 탐색.  
  - **결과**:  
    - 간단한 방법이지만 놀라울 정도로 강력한 성능을 보여줌.  
    - 대부분의 경우, 복잡한 신경망보다 이러한 방법이 충분히 효과적임.  
- **성과**:  
  - 논문 발표, 여러 인턴십 경험, 개발자 도구 제작.  
  - 박사 과정 졸업에 성공.  
- **관련 자료**:  
  1. **논문**: 개발자가 정보를 찾는 방식에 대한 데이터 분석  
     [Foraging and Navigations, Fundamentally: Developers Predictions of Value and Cost (PDF)](https://austinhenley.com/pubs/Piorkowski2016FSE_ValueCost.pdf))  
  2. **Microsoft 인턴십 보고서**: 코드 리뷰 봇 제작 경험  
     [_When users never use the features they asked for_](https://austinhenley.com/blog/featurestheywanted.html)  
- 박사 과정 동안 통계적 기법을 활용해 실질적인 문제를 해결하며 학계와 실무에서 모두 의미 있는 성과를 달성  
  
### 지능형 사용자 인터페이스: 교수로서의 연구 시작  
  
- **새로운 연구 방향 설정**:  
  - 2018년, 테뉴어 트랙 교수로서 **지능형 개발자 도구(Intelligent Developer Tools)**를 연구 주제로 선택.  
  - 초기에는 개념이 모호했지만, 예측 모델을 사용해 프로그래머의 오해를 사전에 식별하고 수정하는 프로젝트로 시작.  
- **첫 번째 연구 제안서**:  
  - **프로젝트 목표**:  
    1. 초보 프로그래머가 프로그램 동작에 대해 가지는 오해를 식별하기 위해 프로그램 분석 기술 및 예측 모델 활용.  
    2. 프로그래머를 방해하지 않으면서 오해를 수정하고 논리를 설명.  
    3. 의도치 않은 프로그램 동작 변화를 포착하는 테스트 코드를 생성해 미래의 오해 방지.  
  - 요약:  
    - 관련 블로그 포스트: [_An inquisitive code editor: Overcome bugs before you know you have them_](https://austinhenley.com/blog/inquisitivecodeeditor.html).  
- **두 번째 프로젝트**:  
  - 프로그래머의 정보 필요성을 예측하고 실시간으로 사용자 인터페이스를 생성하는 연구.  
  - 예시:  
    - Git 히스토리를 탐색하는 프로그래머에게 추천 커밋 세트를 시각화해 제공.  
- **연구 통합**:  
  - **"Inquisitive Programming Environments as Learning Environments for Novices and Experts"**라는 큰 비전을 제안.  
  - 관련 자료:  
    - [프로젝트 제안서 (pdf)](https://austinhenley.com/pubs/Henley2021NSFCAREER.pdf).  
    - [$500,000 규모의 연구 보조금 제안서 작성 과정 블로그 포스트](https://austinhenley.com/blog/500kgrant.html).  
- **성과와 한계**:  
  - 프로젝트는 보조금을 받으며 성공적으로 시작되었으나, 연구가 본격적으로 진행되기 전에 교수직에서 사임.  
- 이 시기는 지능형 사용자 인터페이스에 대한 연구를 구체화하고 큰 비전을 설계한 중요한 전환점이었음  
  
### 프로그램 합성과 대규모 언어 모델(LLMs): Microsoft에서의 경험  
  
- **Microsoft 합류**:  
  - 2022년 1월, Microsoft의 프로그램 합성 팀에 합류.  
  - 같은 해 ChatGPT 출시로 AI 기술이 모든 분야에 적용되기 시작, 최적의 시기에 AI 작업에 몰입.  
- **AI 적용에 대한 신중한 접근**:  
  - AI 팀 소속이었지만, 강력한 이유가 없는 경우 AI 사용에 반대하는 입장:  
    - 사용자 문제를 해결하려는 명확한 목표가 있는지 질문.  
    - 단순한 `if` 문으로 대체 가능한지 검토.  
    - 자연어 인터페이스가 적합한 선택인지 고민.  
  - 관련 의견 공유:  
    - [_Natural language is the lazy interface_](https://austinhenley.com/blog/naturallanguageui.html).  
    - [_Don't trap me in a chat window_](https://austinhenley.com/blog/trappedchat.html).  
- **주요 프로젝트**  
  - 1. **LLM의 주의(attention) 가중치를 활용한 연구**:  
    - 개발자가 코드 탐색 중 어디를 주목할지 예측 가능 여부 조사.  
    - [_Follow-up Attention: An Empirical Study of Developer and Neural Model Code Exploration_ (pdf)](https://austinhenley.com/pubs/Paltenghi2024IEEE_FollowUpAttention.pdf).  
  - 2. **데이터 과학용 AI 튜터**:  
    - 동기부여 블로그 포스트:  
      - [_The pain points of teaching computer science_](https://austinhenley.com/blog/teachingpainpoints.html).  
      - [_Mistakes that data science students make_](https://austinhenley.com/blog/datasciencemistakes.html).  
  - **IntelliCode 사용자 경험 개선**:  
    - 멀티라인 코드 편집 제안에 대한 사용자 인터페이스 탐색.  
    - [_Exploring 50 user interfaces for AI code_](https://austinhenley.com/blog/intellicode.html).  
  - **데이터 과학자를 위한 LLM 기반 도구**:  
    - 동기부여 블로그 포스트:  
       - [_Can ChatGPT do data science?_](https://austinhenley.com/blog/chatgptdatascience.html).  
    - 주요 도구:  
      - [_Improving Steering and Verification in AI-Assisted Data Analysis with Interactive Task Decomposition_ (pdf)](https://austinhenley.com/pubs/Kazemitabaar2024UIST_LLMSteering.pdf).  
      - [_Data Wrangling with Data Wrangler_](https://austinhenley.com/blog/datawrangler.html).  
  - **학생들을 위한 LLM 기반 도구**:  
    - 동기부여 블로그 포스트:  
      - [_Learning to code with and without AI_](https://austinhenley.com/blog/learningwithai.html).  
    - 주요 도구:  
      - [_CodeAid: A classroom deployment of an LLM-based programming assistant_](https://austinhenley.com/blog/codeaid.html).  
      - [_Exploring the Design Space of Cognitive Engagement Techniques with AI-Generated Code for Enhanced Learning_ (pdf)](https://austinhenley.com/pubs/Kazemitabaar2025IUI_AIFriction.pdf).  
  - **기업의 코파일럿(Copilot) 구축 연구**:  
    - 블로그 포스트: [_The pain points of building a copilot_](https://austinhenley.com/blog/copilotpainpoints.html).  
- **현재 및 향후 활동**  
  - **독립적인 AI 도구 개발**:  
    - Microsoft 퇴사 후 개인 AI 프로젝트에 몰두.  
    - 주요 도구:  
      - [_Mirror_](https://austinhenley.com/blog/mirrorlang.html): AI 기반 도구.  
      - [_Promptclipper_](https://austinhenley.com/blog/promptcontext.html): 프롬프트 관리 도구.  
- AI와 LLM을 기반으로 한 다채로운 프로젝트를 통해 혁신적인 솔루션을 개발하며, 지금도 AI 도구 연구와 개발을 지속  
  
### 마무리   
- 즐거운 25년이었음  
- 앞으로의 계획은 무엇? 계속 가르치고, 배우고, 만들어 볼 예정

## Comments



### Comment 33075

- Author: neo
- Created: 2025-01-07T09:53:09+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42569913) 
- AI 팀에 있었지만, 정말 설득력 있는 이유가 없으면 AI 적용을 자제했음. 사용자 문제를 해결하려는 것인지, LLM이 필요한지, 아니면 몇 개의 if 문으로 충분한지 고민했음. 자연어가 적절한 인터페이스인지 확신할 필요가 있음
  - AI 분야에서 실용적인 접근 방식이 신선하게 느껴짐. 간단한 회귀 모델이 신경망보다 성능이 좋았던 도구를 만든 경험이 있음. AI에 올인하지 않는 것에 대해 팀의 반발을 피하기 어려웠음
- 14년 동안 비슷한 여정을 겪었고, 오늘날 어떻게 다를지 항상 궁금했음
  - 우리는 산업과 함께 성장하며 점진적으로 더 복잡한 것을 배울 수 있었음. 오늘날 졸업한 학생들은 첫 직장에서 수십 년의 복잡성을 마주함
- 최근 UTK를 떠난 사람을 봤고, 그가 쓴 블로그 글이 대학원 이후 학계로 가는 것에 대해 다시 생각하게 했음
- 광고와 팝업으로 어수선하지 않은 웹 페이지가 신선하게 느껴짐. 깔끔하고 잘 정리된 텍스트와 간단한 구성으로 이루어져 있음
- 많은 사람들에게 AI는 놀라운 것을 창조하는 재미있는 여정임. 결과가 놀랍다는 것에 동의함. 그러나 과학자들이 그들의 작업이 사회에 미치는 더 큰 영향을 생각하지 않는 것은 슬픈 일임. 그들은 사회적 위치가 높아지면서 그들의 창조물이 사회 구조를 근본적으로 변화시킴. AI는 위험한 요소 중 하나이며, 대기업이 지성을 찬양하여 사람들을 끌어들이는 것은 재앙의 조짐임
