Hoon

ML Systems Tracking & Versioning

모델 개발 과정에서는 수많은 아키텍처와 하이퍼파라미터 조합을 실험하게 됩니다. 겉보기에는 학습률을 0.003에서 0.002로 바꾸는 정도의 작은 차이처럼 보여도, 실제 성능은 크게 달라질 수 있습니다. 각 실험을 재현할 수 있을 만큼의 정보와 산출물(artifact)을 체계적으로 남기는 일이 중요합니다. 학습 과정의 상태를 관찰하고 비교하는 expe...

ML Systems Labeling

대부분의 머신러닝 시스템은 비지도 학습의 가능성에도 불구하고 여전히 감독학습에 의존하고 있으며, 이는 곧 라벨 데이터의 품질과 양이 모델 성능을 직접적으로 좌우함을 의미합니다. 실무 환경에서 라벨링은 더 이상 부수적인 작업이 아니라, 모델 개발과 운영을 지속하기 위한 핵심 기능으로 자리 잡았습니다. 라벨링 전략을 어떻게 설계하느냐에 따라 실험 속도...

ML Systems Sampling

머신러닝 시스템에서 학습 데이터를 다루는 일은 단순한 전처리 단계가 아니라, 모델이 어떤 세계를 보고 학습할 것인지를 결정하는 핵심 설계 요소입니다. 모델 구조나 손실 함수는 눈에 잘 띄지만, 실제 프로젝트에서는 데이터 수집·정제·샘플링 단계가 전체 성패를 좌우하는 경우가 많습니다. 현실의 데이터는 완성된 “데이터셋”이라기보다, 시간에 따라 분포가 ...

Software Engineering Debugging

소프트웨어 디버깅은 오류가 발생했을 때 그 원인을 찾아 수정하는 활동입니다. 소프트웨어 변화 과정에서 디버깅은 가장 많은 시간과 비용이 소요되는 작업 중 하나입니다. 소프트웨어가 장기간 변화하는 현대 개발 환경에서는 디버깅을 개인의 숙련도에만 의존하기 어렵습니다. 이로 인해 자동화된 디버깅 기법이 중요한 연구 주제로 자리 잡았습니다. Softw...

Software Engineering Documentation

소프트웨어는 코드만으로 구성되지 않습니다. 실행 가능한 프로그램과 이를 설명·보조하는 문서가 함께 소프트웨어를 이룹니다. 문서는 개발, 유지보수, 협업, 인수인계 전 과정에서 핵심적인 역할을 합니다. 애자일 개발에서는 과도한 문서를 지양하지만, 문서 자체를 불필요한 산출물로 보지는 않습니다. 핵심은 “얼마나 많이 쓰느냐”가 아니라 “필요한 정보를 ...

Software Engineering Verification

소프트웨어 검증은 구현된 소프트웨어가 주어진 명세를 정확히 따르는지를 확인하는 활동입니다. 검증의 핵심 질문은 “우리가 의도한 대로 만들었는가”입니다. 이는 사용자의 진짜 요구를 다루는 검증(validation)과 구분됩니다. 실제 개발에서는 명세 자체가 불완전한 경우가 많아, 검증과 검증 대상인 명세를 함께 개선하는 과정이 반복됩니다. Verifi...

Software Engineering Code Search

대규모 소프트웨어 시스템에서 개발자는 이미 존재하는 코드를 반복해서 작성하는 경우가 많습니다. 이는 필요한 코드를 찾기 어렵거나, 기존 코드의 존재를 인지하지 못하기 때문입니다. Code Search와 Clone Detection은 이러한 문제를 해결하기 위한 대표적인 소프트웨어 공학 과제입니다. 두 작업 모두 “유사한 코드를 찾는다”는 공통점을 가지...

Software Engineering Design & Implementation

설계와 구현은 요구사항을 실제 동작하는 소프트웨어로 바꾸는 단계입니다. 이 단계의 핵심은 코드를 많이 작성하는 것이 아니라, 변경에 강하고 유지 가능한 구조를 선택하는 데 있습니다. 특히 아키텍처 수준의 설계 결정은 이후 구현 비용에 큰 영향을 미칩니다. Architectural Design 아키텍처 설계는 시스템의 전체 구조를 정의합니다. 구성 ...

Software Requirements Engineering

소프트웨어 공학에서 요구사항은 시스템이 제공해야 하는 서비스와 지켜야 하는 제약을 의미합니다. 요구사항 공학은 고객이 원하는 서비스를 파악하고, 개발·운영 과정에서 발생하는 제약을 함께 식별하여 합의 가능한 명세로 정리하는 반복적 활동입니다. 계획 기반 개발에서는 요구사항을 초기에 상세히 고정하려는 경향이 있으나, 애자일에서는 과도한 상세 요구사항이 ...

Software Engineering Agile

소프트웨어 공학에서 개발 프로세스는 단순한 절차의 문제가 아니라, 불확실성과 변화에 어떻게 대응할 것인가에 대한 철학적 선택입니다. 전통적인 계획 중심 개발 방식은 명확한 요구사항과 안정적인 환경을 전제로 하지만, 실제 소프트웨어 개발 환경에서는 요구사항 변경, 기술적 리스크, 이해관계자의 변화가 빈번하게 발생합니다. 이러한 문제의식 속에서 Agile...

XAI Language Models

대규모 언어 모델은 수십억 개 이상의 파라미터를 가지며, 뛰어난 성능을 보이는 동시에 심각한 블랙박스 문제를 내포하고 있습니다. 언어 모델은 자연스럽고 설득력 있는 문장을 생성하지만, 왜 그러한 출력을 생성했는지에 대한 근거를 명확히 제시하지 않는 경우가 많습니다. 이로 인해 환각 현상, 편향된 판단, 위험한 추론 과정이 발생할 수 있으며, 이러한...

XAI Generative Models

생성 모델은 데이터 분포를 학습하여 새로운 샘플을 생성하는 모델로, 최근 인공지능 연구와 응용 전반에서 핵심적인 역할을 수행하고 있습니다. 이러한 생성 모델은 단순히 데이터를 만들어내는 데 그치지 않고, 설명가능 인공지능 관점에서 두 가지 중요한 역할을 가집니다. 첫째, 생성 모델은 기존 설명 기법을 보완하는 설명자, Explainer로 활용될 수 ...

XAI Evaluation

설명가능 인공지능에서 가장 근본적인 문제 중 하나는 설명 방법 자체가 아니라, 그 설명이 얼마나 신뢰할 수 있는지를 판단하는 기준입니다. 모델의 예측 성능은 정확도, 정밀도, 재현율과 같은 명확한 지표로 평가할 수 있지만, 설명의 품질은 직관적이고 주관적인 판단에 의존해 온 경우가 많습니다. 이로 인해 서로 다른 XAI 방법이 제안되더라도, 어떤 방법...

Deep Learning Long Short-Term Memory

순환신경망(RNN)은 시퀀스 형태의 데이터를 처리하는 대표적인 구조이지만, 시간이 길어질수록 정보를 안정적으로 전달하기 어렵습니다. 특히 기울기 소실과 기울기 폭발 문제로 인해 장기 의존성을 학습하기 힘들다는 한계가 있습니다. 이러한 한계를 극복하기 위해 LSTM 구조가 제안되었으며, 정보가 여러 시점에 걸쳐 안정적으로 보존되도록 설계된 점에서 중요한...

Python Background

파이썬(Python)은 간결한 문법과 높은 생산성 덕분에 많은 사람들이 사용하는 언어입니다. 하지만 대부분의 사용자들은 파이썬이 단일한 형태로 존재한다고 생각하며, 그 내부 구현 방식이나 다른 파이썬 구현체까지는 잘 알지 못합니다. 파이썬 언어의 이름이 뱀이 아니라 코미디 프로그램에서 유래했다는 사실도 자주 혼동됩니다. 본 문서에서는 파이썬의 이름...

ML Systems Data Engineering

ML은 빅데이터의 성장과 맞물려 있습니다. 대규모 데이터 시스템은 복잡하며 표준과 도구가 빠르게 변합니다. 이 글은 데이터 소스 → 데이터 포맷/저장 방식 → 데이터 모델(관계형·NoSQL) 순서로 기초를 정리하여, 실무에서 흔히 마주치는 선택지를 이해하도록 돕습니다. 프로세스 간 데이터 전달 방식과 배치/스트림 처리의 구분은 후속 글에서 다룹니다. ...

ML Systems Basic

머신러닝 시스템은 단순히 모델만을 개발하는 것이 아니라, 비즈니스 목표, 데이터, 인프라, 배포, 모니터링 등 다양한 요소가 유기적으로 결합되어야 합니다. 머신러닝 시스템 설계의 핵심 요소와 요구사항, 그리고 반복적 개발 프로세스를 정리했습니다. 1. 비즈니스와 ML 목표 머신러닝 시스템을 개발하기 전에 가장 먼저 고려해야 할 것은 왜 이 시...

Deep Learning Start

출처: 사이토 고키, 『밑바닥부터 시작하는 딥러닝』 (2017) 본 문서는 4장: 신경망 학습의 내용을 정리한 것입니다. 딥러닝 모델을 사용하려면 반드시 학습 과정을 거쳐야 합니다. 학습이란 훈련 데이터로부터 가중치와 편향 같은 매개변수의 최적값을 자동으로 찾아내는 과정을 의미합니다. 이때 모델이 올바르게 학습하도록 이끌어주는 것이 바로 손실 함수...

Graph Search Algorithm

그래프는 노드(정점)와 간선으로 구성된 자료구조로, 다양한 실세계 상황을 모델링하는 데 사용됩니다. 소셜 네트워크, 도로 체계, 컴퓨터 네트워크 등 많은 시스템이 그래프로 표현될 수 있습니다. 그래프 탐색 알고리즘은 이러한 구조를 체계적으로 순회하고 분석하는 방법을 제공합니다. 그래프 표현 방식은 크게 인접 행렬(Adjacency Matrix)과...