qofo.log

읽은 것, 만든 것, 고친 것을 기록한다.

MML 시험 직전 최종 정리: 공식, 조건, 증명 뼈대

MML 2~12장에서 시험 직전에 볼 것만 한 편에 모았다. 시험장에서 쓰는 요령, 교재 표기 함정, 장별 공식과 조건, 답안에 그대로 쓰는 증명·유도 뼈대 12개, 서술형 답, 영어 지문 용어, 입실 직전 점검 목록.

MML 실전 모의고사 풀이: 답과 단계별 풀이

MML 실전 모의고사 네 세트(기초수학·기초 AI의 A형과 B형) 24문항의 답과 단계별 풀이. 문제마다 답안지에 꼭 보여야 할 줄(채점 포인트)과 교재 근거를 적었다.

MML 실전 모의고사: 기초수학·기초 AI 60분 세트

MML Part 1(2~7장)과 Part 2(8~12장)를 각각 60분 안에 푸는 6문항짜리 모의고사. 기본 계산 위주의 A형(우리말)과 증명·유도 위주의 B형(영어 지문)을 과목마다 하나씩 만들었다. 답과 풀이는 다음 편에 있다.

MML 8~12장 연습문제 풀이: 답과 단계별 풀이

MML 8~12장 연습문제 43개와 OX 퀴즈의 답과 단계별 풀이. 경험적 위험과 베이즈 팩터, 정규방정식과 베이즈 선형회귀, PCA와 확률적 PCA, GMM의 EM, SVM의 쌍대와 커널.

MML 8~12장 연습문제: 교재를 따라 만든 43문제와 OX 퀴즈

MML Part II(8~12장)에는 장 끝 연습문제가 없어서, 교재의 절·식·예제를 따라 손으로 풀 수 있는 문제 43개와 OX 퀴즈 15개를 만들었다. 답과 단계별 풀이는 다음 편에 있다.

MML 교재 연습문제 전체 풀이: 2~7장 75문제

MML 2~7장의 장 끝 연습문제 75개를 문제마다 단계별 풀이, 답, 검산 순서로 풀었다. 선형대수, 해석기하, 행렬분해, 벡터 미적분, 확률과 분포, 연속 최적화.

MML 12장 SVM: 마진, 쌍대 문제, 커널

MML 12장(교재 370~394쪽) 해설. 분리 초평면과 마진 유도, 하드·소프트 마진, 힌지 손실, 라그랑주 쌍대 문제와 3점 손계산, 커널을 정리했다.

MML 11장 GMM: 가우시안 혼합 모델과 EM 알고리즘

MML 11장(교재 348~369쪽) 해설. 가우시안 혼합 모델의 최대가능도 학습, 책임도 계산과 평균·공분산·가중치 갱신식 유도, EM 알고리즘 한 바퀴 손계산, 잠재변수 관점을 정리했다.

MML 10장 PCA: 분산 최대화, 재구성 오차, 확률적 PCA

MML 10장(교재 317~347쪽) 해설. 분산 최대화와 재구성 오차 최소화라는 두 관점, SVD와 저계수 근사, 데이터 수가 차원보다 적을 때의 계산 요령, 확률적 PCA를 4점 데이터 손계산과 함께 정리했다.

MML 9장 선형회귀: 정규방정식, MAP, 베이즈 선형회귀

MML 9장(교재 289~316쪽) 해설. 3점 데이터 하나로 정규방정식, 릿지 회귀와 MAP의 관계, 베이즈 선형회귀의 사후분포와 예측분산, 최소제곱해가 직교사영이라는 사실까지 이어서 계산한다.

MML 8장 모델과 데이터: 경험적 위험, MLE와 MAP, 모델 선택

MML 8장(교재 251~288쪽) 해설. 경험적 위험 최소화, 최대가능도(MLE)와 최대사후(MAP) 추정, 베이즈 추론, 방향성 그래프 모델과 d-분리, 교차검증·AIC·BIC 모델 선택을 확인 문제와 함께 정리했다.

MML 7장 연속최적화: 경사하강법, 라그랑주 승수, 볼록 최적화

MML 7장(교재 225~248쪽) 해설. 경사하강법과 수렴 조건, 라그랑주 승수와 쌍대성, 볼록성 판정, 선형·2차 계획법, 볼록 켤레를 연습문제 7.1~7.11 풀이와 함께 정리했다.

MML 6장 확률과 분포: 베이즈 정리, 가우시안, 지수족

MML 6장(교재 172~224쪽) 해설. 확률 공간, 합·곱의 법칙과 베이즈 정리, 평균·분산과 독립, 가우시안의 조건부·주변·곱, 켤레성과 지수족, 변수 변환을 예제와 연습문제 풀이로 정리했다.

MML 5장 벡터 미적분: 기울기, 야코비안, 역전파

MML 5장(교재 139~171쪽) 해설. 편미분과 기울기, 야코비안, 행렬 미분 항등식, 역전파와 자동 미분, 테일러 급수를 크기(shape) 맞추기 중심으로 정리했다. 교재는 기울기를 행벡터로 쓴다.

MML 4장 행렬분해: 고유값, 대각화, SVD

MML 4장(교재 98~138쪽) 해설. 행렬식과 대각합, 고유값과 고유벡터, 숄레스키 분해, 대각화, 특이값 분해(SVD), 저계수 근사를 손계산과 연습문제 4.1~4.12 풀이로 정리했다.

MML 3장 해석기하: 노름, 내적, 직교사영

MML 3장(교재 70~97쪽) 해설. 노름과 내적, 길이·거리·각도, 정규직교기저와 그람-슈미트, 부분공간으로의 직교사영, 회전을 손계산 예제와 연습문제 3.1~3.10 풀이로 정리했다.

MML 2장 선형대수: 연립방정식, 기저와 랭크, 선형사상

MML 2장(교재 17~69쪽) 해설. 연립방정식과 가우스 소거, 벡터공간과 일차독립, 기저와 랭크, 선형사상과 기저 변환, 아핀공간을 손계산 예제와 교재 연습문제 풀이로 정리했다.

MML 장별 상세 해설: 목차와 공부 순서

Mathematics for Machine Learning(MML) 2~12장을 처음 배우는 사람도 따라갈 수 있게 풀어 쓴 해설의 목차다. 장마다 무엇을 손으로 풀어 봐야 하는지, 어떤 순서로 공부하면 좋은지, 교재 표기에서 틀리기 쉬운 점을 모았다.

폰에서 도는 에이전트에게 GPU를 빌려 주다: Colab CLI로 Claude Code와 Colab 잇기

이 폰은 서버 일은 하지만 AI 모델을 돌릴 힘은 없다. 폰에서 도는 Claude Code가 필요할 때 Colab GPU를 직접 빌려 쓰도록 공식 Colab CLI를 붙였다. MCP가 아니라 CLI를 고른 이유, 브라우저 없는 로그인, 에이전트에게 규칙을 알려 주는 스킬, 그리고 T4까지의 검증을 적는다.

알림으로는 배터리를 지킬 수 없었다: 스마트 플러그로 충전기 켜고 끄기

이 폰에서 가장 비싼 소모품은 배터리다. 충전기를 빼고 꽂으라는 알림은 밤에 아무도 보지 않았고, 폰은 방전돼 꺼졌다. 충전기를 스마트 플러그에 물리고 폰이 직접 켜고 끄게 했다.

터미널을 닫아도 작업은 이어진다: proot 밖 tmux에 에이전트 세션 두기

1편에 적은 목표는 리눅스를 올리고 AI 코딩 에이전트를 붙여 24시간 돌리는 것이었다. 6편에서 블로그와 터널은 터미널과 무관하게 돌게 됐다. 그런데 정작 그 코드를 고치는 에이전트 세션은 그대로였다.

터미널 말고 편집기: 폰에 VS Code를 올리고 tailnet 안에서만 열기

이 폰은 지금까지 SSH 터미널로만 다뤘다. nano로 파일을 고치고, git 명령을 손으로 치고, 결과는 curl로 확인했다. 글이 열 편이 되고 스크립트가 여섯 개가 되자 이 방식이 버거워졌다.

원본 하나, 서버 둘: Hugo로 옮겨 폰과 GitHub Pages에 동시에 배포하기

2편에서 만든 블로그는 파이썬 파일 하나가 전부였다. 글 목록을 파싱하고, HTML을 문자열로 들고 있다가 내보내고, 마크다운은 브라우저가 marked로 그렸다. 이 구조에는 약점이 하나 있다. 폰이 꺼지면 글도 사라진다.

Tailscale 안에서만 열리는 문서 서버: 방화벽 없는 폰에서 접근 제어하기

이 폰에서는 블로그 말고도 문서를 쓴다. 사이드 프로젝트 기획서, 기존 서비스 조사, 블로그 이전 계획 같은 것들이다. 이런 문서를 노트북이나 다른 폰의 브라우저로 읽고 싶었다. 조건은 하나다. 나만 봐야 한다.

살아 있지만 일하지 않는 프로세스: 재부팅 후 멈춘 ngrok과 능동 헬스체크

6편에서 감시 데몬을 다시 만들고 "재부팅까지 시험해야 한다"고 정리했다. 그날 밤 폰을 재부팅했더니 블로그 주소에 ngrok의 ERRNGROK3200(엔드포인트 오프라인) 오류 페이지가 떴다.

감시 데몬이 지키지 못한 것: 원인 분석과 재설계

5편에서 3층 자동 시작과 10초 주기 감시 데몬을 만들었다. 하루 뒤 상태를 점검한 결과는 이렇다.

Termux:Boot와 감시 데몬으로 무인 운영 구성하기

4편에서 고정 주소를 확보했다. 남은 요구사항은 무인 운영이다. 사람이 Termux 앱을 열지 않아도 서버가 떠 있어야 한다.

도메인 없이 고정 주소 갖기: Cloudflare, DuckDNS, ngrok 실전 비교

결론부터 쓰면 ngrok의 무료 고정 도메인을 채택했다. 개인 도메인을 사지 않고, 공유기를 건드리지 않고, 폰이 어느 망에 붙어 있든 같은 주소로 열리는 방식은 이것뿐이었다.

스마트폰 리눅스의 진짜 제약: 가짜 root, 없는 systemd, 그리고 가짜 /proc

PRoot 환경의 Ubuntu는 겉보기에 표준 리눅스와 같다. apt-get이 돌고, whoami는 root를 출력하고, /etc/os-release는 Ubuntu 26.04.1 LTS라고 답한다. 그래서 일반 서버처럼 다루게 되고, 그러다 벽에 부딪힌다.

파이썬 표준 라이브러리만으로 만든 블로그, 그리고 첫 외부 공개

1편에서 폰 안에 Ubuntu를 올리고 AI 에이전트를 붙였다. 다음 문제는 가독성이었다. 작업 기록을 마크다운으로 남겼는데, 터미널에서 cat으로 읽으면 표는 어긋나고 코드 블록은 백틱이 그대로 보인다.