차원을 의도적으로 더하기
a_cat = np.random.rand(64, 64, 3)은 64×64 RGB 이미지를 흉내 낸 배열이야. 축은 높이, 너비, 색상 채널 셋이고 값은 12,288개지. 고양이의 시각적 표면은 담을 수 있지만 이름과 성격, 행동까지 담지는 못해.
고양이에게 안경을 씌운다고 해보자. 안경에는 프레임 색, 렌즈 농도, 위치 같은 별도 특성이 있어. cat_with_glasses = combine(cat, glasses)는 고양이를 버리고 안경으로 바꾸는 게 아니라 두 표현을 조합해 새 상태를 만드는 생각이야. 모자와 이름, 기분도 같은 방식으로 더할 수 있어.
캣우먼 같은 캐릭터는 더 복잡해. 고양이와 인간의 특성, 의상, 서사, 말투가 한 인물 안에서 함께 작동해. 이 비유의 요점은 가능한 캐릭터를 전부 목록으로 만들기보다, 재사용할 특성과 관계를 조합해 새 사례를 표현하는 데 있어.
관측값과 해석을 구분하기
털빛과 픽셀은 비교적 직접 관측할 수 있지만 귀여움, 분위기, 패션 감각은 관찰자와 맥락에 따라 달라지는 해석이야. 그렇다고 모델에 쓸 수 없는 건 아니야. 다만 이런 속성을 라벨이나 학습된 표현으로 다룰 때는 누가 어떤 기준으로 측정했는지 함께 물어야 해.
현대 모델은 토큰이나 이미지를 수백에서 수천 차원의 벡터로 바꾸곤 해. 그 축 대부분에는 사람이 붙인 이름이 없어. 모델이 과제를 풀며 유용한 구별을 학습한 결과라서, 한 축만 떼어 ‘이건 귀여움’이라고 단정하기보다 벡터 전체의 관계를 보는 편이 안전해.
객체지향의 조합 감각
객체지향 설계에도 비슷한 감각이 있어.
Cat은Mammal이 가진 공통 성질을 상속할 수 있어.CatWithGlasses는Cat과Glasses를 합성할 수 있어.CatWoman을 반드시 다중 상속으로 구현해야 하는 건 아니야. 상속과 합성 가운데 어떤 관계가 실제 설계를 더 정확히 나타내는지 골라야 해.
Python 클래스와 AI 표현은 같은 물건은 아니지만, 모든 사례를 외우지 않고 재사용할 구조를 만든다는 공통점이 있어. 좋은 표현은 새 조합을 만들 수 있으면서도 각 축과 관계의 뜻을 잃지 않아.
class Mr.Nobody():
class Mr.NobodyAge10(Mr.Nobody):