원천 15부: 단어 뒤에 숨은 벽
출처: Dev.to
게이트가 ‘pass’이라고 말했고, 시스템은 여전히 나빴다.
제14장은 빌드 순서를 마쳤습니다: 먼저 게이트, 그다음 서브스트레이트, 그리고 컴포저였습니다. 저는 이미 은행에 있는 다의성 개념들이 분할이 필요하다는 점을 골라내기 시작했습니다. 그 후 작업을 시작하기 전 마지막 트레이스를 한 번 더 실행했고, 예상치 못한 내용이 나타났습니다.
지난 몇 일간의 감사 트래픽에서 다의성 노출은 이미 어휘에 존재하는 개념들에서 나온 것이 아니라, 존재하지 않는 개념들에서 나왔습니다. 대화 동안 18가지 다른 주제들이 외부 소스에서 끌어들여졌으며, ‘happiness’, ‘feelings’, ‘brain’, ‘dream’, ‘anger’와 같은 단어들이 있었습니다. 이 모든 단어들은 Origin 어휘에 존재하지 않았습니다.
다의성 게이트는 트리거가 될 단어가 없었기 때문에 아무 것도 할 수 없었습니다.
그래서 저는 전환했습니다. 먼저 어휘를 만들고, 부족한 일상 단어들을 추가합니다. 그러면 게이트는 검증할 대상이 생깁니다.
이 목적을 위해 도구가 있었습니다. ‘per-slot integrator’(슬롯별 통합기)였습니다. 우리는 Discovery 스타일의 성장 과정에서 항상 이 도구를 사용했습니다 - 새로운 단어가 기존 개념(고양이 근처에 킷텐, 파딩 근처에 피)과 가깝게 나타날 때, 통합기는 인코더 안에 슬롯을 만들고, 그 단어의 몇 가지 양의 예시를 훈련시키고, 게이트를 돌려 새 슬롯이 이미 작동 중인 것을 방해하지 않도록 했습니다. 이 도구는 깨끗한 기록을 가지고 있었습니다. 모든 킷텐, 모든 파딩, 모든 키티가 후속 regresion 없이 성공했습니다.
계획은 일상적인 다섯 개의 개념(습한, 뇌, 꿈, 분노, 행복)에 같은 작업을 하겠다는 것이었습니다. 각각 이미 이전 훈련 실행에서 최소 100개의 자연스러운 양의 예시가 코퍼스에 들어 있었습니다. 다른 프로세스에 의해 수집된 예시들이었습니다. 우리는 단지 그들을 인정해야 했습니다.
저는 배치를 실행했습니다. 다섯 개 모두 게이트에서 실패했습니다.
Recall은 약 50% 수준이었습니다 - 새 슬롯들은 자신의 양의 예시 중 절반 정도만 정확히 식별할 수 있었습니다. 각 통합은 기존 개념 약 15개가 이전에는 정상적으로 작동하던 곳에서 실패하게 만들었습니다. 다섯 개 모두 동일한 내부 도메인 버킷인 “other” 로 라우팅되었으며, 이 버킷은 다른 곳에서는 적절히 맞지 못한 덤핑 ground 개념들로 이미 포화 상태였습니다. 통합기는 모든 것을 되감아 Production 상태를 변경하지 않았습니다.
5번의 시도, 5번의 실패, 모두 동일한 형태였습니다.
몇 일 동안 쉬었습니다.
프로젝트 작업 중 휴식을 취하지 않는 버전이 있습니다. 바로 진행하는 것이죠. 그 버전은 틀렸습니다. 다섯 번의 시도에서 동일한 실패 패턴은 튜닝 문제보다는 구조적 문제입니다. 통합기에 더 많은 후보에 대한 파라미터를 조정하러 돌아가는 것은 같은 5번의 실패를 다른 이름만 붙인 결과로 만들었습니다. 올바른 행동은 멈추고 질문을 재구성하는 것이었습니다.
재구성된 질문은 도메인 할당에 관한 것이었습니다. 통합기는 다섯 개념을 “other” 로 라우팅했으며, 이는 할당 로직이 선택한 도메인이었죠. 하지만 뇌는 “other”가 아니며, 생물학입니다. 분노도 “other”가 아니라 감정입니다. 분류 체계에는 맞는 카테고리가 있었지만, 할당 로직이 그것을 포착하지 못했습니다.
몇 일 뒤에 다시 돌아와 수정했습니다. 이제 뇌는 생물학으로, 분노는 감정으로 이동했습니다.
다시 배치를 실행했습니다. 이번엔 두 개가 통과했습니다.
뇌는 생물학 도메인에 대해 62% 회상률을 보였고, 23%의 거짓 양성률, 단 하나의 후속 regresion이 있었습니다. 분노는 감정에 대해 56% 회상률을 보였고, 22%의 거짓 양성률, 0개의 후속 regresion이 있었습니다. 개별 개념 게이트는 초록색이었으며, 첫 번째 시도보다 모든 측정 지표에서 더 좋았습니다.
뭔가 이상하게 느껴졌습니다.
몇 달 전에 스스로 메모를 썼는데, “뭔가 이상하게 느껴지면 조사하라”고 적어두었습니다. 그 말투는 여러 번 맞았습니다. 따라서 병합 전에는 게이트가 실행되지 않는 스윕을 돌렸습니다. 코퍼pus에서 무작위 5000문장을 선택하고, 뇌와 분노 슬롯이 로드된 인코더를 통과시켰습니다. 각 문장에서 top-1이 발생하는 것을 관찰했습니다.
뇌는 전체 문장의 15.6%에 해당하는 top-1을 생성했으며, 즉 6개 중 1개가 뇌가 top-1이었습니다.
분노는 전체 문장의 7.4%에 top-1을 발생시켰습니다.
샘플 오류: 피가 묻은 채찍에 관한 문장이 0.99 신뢰도로 뇌를 top-1로 만들었습니다. 남자의 속도에 관한 문장은 단어가 “head”이 들어가 있어 뇌가 top-1이 되었습니다. 분노는 전혀 분노와 관련이 없는 문장에서도 top-1을 발생시켰습니다.
개별 개념 게이트는 120개의 무작위 음의 예시를 검사하고 깨끗하다고 판단했습니다. 하지만 실제 인코더는 다양한 영어 텍스트를 보고, 트리거가 되어야 할 입력에 대한 신호를 모든 곳에 발생시켰습니다.
두 모델 모두 되감아 indietro 돌렸습니다. 인코더가 revert되었고, Producción 상태는 다시 변하지 않았습니다.
이것은 첫 번째 배치가 암시하고 두 번째 배치가 확인한 아키텍처적 발견이었습니다. per-slot integrator는 자체 게이트가 볼 수 없는 교차 도메인 한계가 있습니다. 게이트는 120개의 무작위 음의 예시를 샘플링하는데, 이는 명백한 종류의 거짓 양성만을 포착하기에 충분하지만, 6개 중 1개가 조용히 작동하는 슬롯을 포착하기에는 부족합니다.
개별 개념 통합은 깨끗해 보입니다. 하지만 전체 인코더를 전 세계적으로 망가뜨립니다.
원인은 구조적입니다. 통합기는 로컬에서 새 슬롯을 만들고, 양의 예시를 보여주고, 무작위 다른 텍스트에서 뽑은 작은 음의 집합을 보여주며 훈련합니다. 그 문장에서 “random negatives”가 작동하는 표현입니다. 120개의 무작위 문장은 영어 내용의 일부만을 포함하지만, 새 슬롯이 발견할 특이한 거짓 양성 패턴을 포함하지 않습니다.
좁은 동일 도메인 성장에 적합한 방법은 바로 그 것입니다 - 좁은 동일 도메인. 새 개념이 기존 개념과 피처 공간에서 인접해 있다면 슬롯은 이미 학습된 차별성을 물려받아 나머지 드리프트를 포착하기에 충분합니다. 120개의 음의 예시는 충분합니다. 반면, 새 개념이 의미적으로 고립된 곳에 위치한다면 자체 차별성을從零부터 tiny 예산으로 만들어야 하며, 잘못할 가능성이 큽니다. 음의 예시는 더 이상 충분하지 않습니다.
크로스 도메인 어휘를 위한 길은 per-slot 통합이 아니라 joint retraining(joint 재훈련)입니다. 새 개념을 나머지 모든 내용과 함께 배치하고, 전체 인코더에 대해 훈련시켜 시스템이 기존 슬롯에 비해 새 슬롯의 위치를 스스로 파악하게 합니다. 이는 비용이 많이 듭니다. 하지만 Origin이 실제로 필요로 하는 일상적인 어휘를 추가하는 유일한 방법입니다.
과거 실패는 일정을 고정시켰습니다. 다음에 어휘 확장이 일어날 때는 바로 joint retrain이어야 합니다. 나중이 아니라 즉시.
다의성 게이트는 여전히 대기열에 있습니다. 서브스트레이트도 마찬가지입니다. Part 14에서 제시한 순서(게이트, 서브스트레이트, 컴포저)는 그대로 맞습니다. 바뀐 것은 선행 조건입니다. 게이트가 보호할 어휘는 자체 전용 작업을 필요로 하며, 그 작업은 게이트 뒤에 오는 것이 아니라 앞에 와야 합니다.
한 명. 한 개의 GPU. 아리조나에 있는 1,800달러 컴퓨터. 아직 구축 중입니다.
Origin은 Fallen Angel Systems에서 Genesis 프레임워크(NVIDIA Inception 멤버)를 사용해 개발됩니다. (USPTO 특허 출원 #64/016,973, #64/017,567). FAS Guardian는 3ms 미만으로 프로MPT 인젝션을 방어하는 생산 AI 시스템을 보호합니다. FAS Judgement은 간격을 찾는 오픈 소스 공격 콘솔입니다. Defense. Offense. Creation.
fallenangelsystems.com | Judgement on GitHub | Guardian on GitHub
질문 또는 컨설팅 문의: josh@fallenangelsystems.com