안녕하세요 여러분. 현재 프론티어 (Frontier) 모델들에서 몇 가지 문제점을 발견하여 공유하고자 합니다. # math_code_hallucination > 단일 프롬프트 내에서 수학과 코드를 결합했을 때 발생하는 실패 기록. --- ## 사례 1 ### 초기 프롬프트 ( p0 ) 다음과 같은 프롬프트를 입력하면: python lora, 사전 학습된 llm(qwen, mistral, llama 등과 같은), 그리고 pytorch의 훈련 파이프라인을 사용하여 llm의 환각(hallucination)을 완화하기 위해 적용되는 sub rieman의 코드 구현을 만드세요. 다음과 같은 종류의 코드가 생성됩니다: python ... _, singular_values, vh = torch.linalg.svd(centered.float(), full_matrices=False) # gpt로부터 ... --- ### 비교 | 프롬프트 유형 | 결과 | |---|---| | 초기 프롬프트 p0와 같이 LLM 훈련 코드 내에 sub-Riemannian 기하학을 구현하도록 요청할 경우 -> SVD, PCA, 투영(projection) 및 이와 유사한 방법들을 사용하는 코드가 생성됨 | LLM 훈련 코드 내에 sub-Riemannian 기하학을 구현하도록 요청하지 않고, 대신 단순히 “sub-Riemannian 기하학을 구현하라” 또는 “sub-Riemannian 코드를 작성하라”고 요청할 경우 -> 측지선(geodesics) 및 유사한 개념을 포함하는 코드 구현이 잘 생성됨 (Sub-Riemannian 기하학은 기하학의 한 분야입니다.) (측지선은 두 점 사이의 최적 거리를 의미합니다.) 측지선을 계산하는 것은 비용이 많이 들고 구현이 복잡하기 때문에, 흔히 사용되고 저렴한 SVD, PCA, 투영(projection) 및 유사한 방법들이 대신 사용됩니다. 그리고 SVD, PCA, 투영(projection)은 리만 기하학 (Riemannian geometry)이 아닙니다. --- ### 주요 관찰 사항 text 수학만을 포함하는 코드를 요청할 경우 | `-- 코드가 잘 작성됨 하지만: text 코드와 수학을 결합할 경우 | `-- LLM이 사용자가 모르는 사이에 적용될 수학 공식(mathematical formula)을 임의로 변경함 다시 말해: text sub-Riemannian 기하학을 구현하라고 요청할 경우 | `-- 구현을 잘 해냄 하지만: text sub-Riemannian 기하학을 코딩 요소와 결합할 경우 | `-- 문제가 발생함 즉, 다음과 같습니다: > 내용이 수학으로만 구성된 코드를 작성하도록 요청하면, 코드를 잘 작성합니다.
하지만 코드와 수학이 혼합될 경우, LLM은 사용자가 모르는 사이에 적용되어야 할 수학 공식(mathematical formula)을 임의로 변경해 버립니다. 다시 말해, 서브-리만 기하학 (sub-Riemannian geometry)을 구현하도록 요청하면 잘 해냅니다. 문제는 코딩 요소가 서브-리만 기하학 (sub-Riemannian geometry)과 결합될 때 발생합니다. --- ## Case 2 만약 은닉 공간 (hidden space) 내의 잠재 벡터 (latent vectors)를 사용하여 LLM 학습 코드를 작성하도록 요청한다면, 제 경우의 예시로 nn 블록의 출력값인 z에 대해, 때때로 |z|의 크기 (magnitude)를 1로 만들거나 더 작게 만드는 코드를 작성하곤 합니다. text 은닉 공간 잠재 벡터 (Hidden-space latent vectors) | `-- z: nn 블록의 출력값 | |-- |z|의 크기를 1로 만듦 `-- 또는 |z|의 크기를 더 작게 만듦 github link : genji970/math_code_hallucination: 수학과 코드가 하나의 프롬프트에 결합될 때, LLM이 어려운 수학적 구성 요소를 더 단순한 계산적 대리물 (computational surrogates)로 조용히 대체할 수 있는 방식에 대한 기록. /u/Round_Apple2573이 r/MachineLearning에 제출함 [link] [comments]