본문 바로가기

IT/AI , 로봇

[언어] 언어 AI 기본

기본 개념을 재학습 해봅시다.

자연어?

자연어가 아닌것은 뭘까요 그럼?

자연어 <-> 인공언어 (프로그래밍 등)

입니다.

 

자연어 처리 

자연어 처리는,

NLP = NLU + NLG + 형태소,의미,구문분석 등

 

NLP : 자연어 처리

NLU : 자연어 이해

NLG : 자연어 생성

입니다.

 

형태소 분석은 문장이나 문서를 형태소라는 의미 단위로 분할하는 과정을 말합니다. 형태소는 단어의 최소 의미 단위로서 독립적인 의미를 가집니다.

원형 분석은 형태소 분석 결과로 얻은 형태소들의 원형을 찾는 작업입니다. 각 형태소의 원형은 단어의 기본 형태를 나타내며, 동사의 경우 원형은 동사의 원형 형태가 됩니다. 예를 들어, "나가/VV"는 원형 분석을 통해 "나가다"로 복원됩니다.

 

택스트 요약

추출 요약 : 핵심 문장, 단어를 뽑아서 그대로 요약에 사용합니다.

추상 요약 : 생성 요약. 자유로운 문장을 생성 가능하지만 난이도가 있죠.

 

질의 응답

다양한 입력에 대한 다중 추론이 필요한경우 Multimodal Multi-hop QA 과 같은 여러 모달리티(예: 텍스트, 이미지, 오디오, 비디오)를 포함하여 여러 단계(홉)를 거쳐 추론하는 질의응답 방식을 쓸 수 있습니다.

이 방식은 단일 모달리티에 의존하는 기존의 질의응답 시스템을 보완하기 위해 개발되었습니다. 다중 모달 멀티-홉 QA는 다양한 모달리티에서 정보를 수집하고, 이를 통합하여 질문에 대한 복잡한 추론을 수행합니다.

일반적인 멀티-홉 QA 시나리오는 다음과 같습니다:

첫 번째 홉: 질문과 관련된 초기 정보 수집

텍스트, 이미지, 비디오 등 다양한 모달리티에서 정보 수집
초기 정보는 질문에 대한 힌트나 컨텍스트를 제공


중간 홉: 초기 정보를 바탕으로 추가 정보 수집

첫 번째 홉에서 얻은 정보를 사용하여 추가적인 질문 생성
이러한 질문에 대한 답변을 통해 정보를 확장하고 세부적인 이해를 위한 추가적인 힌트 획득


마지막 홉: 최종 답변 도출

중간 홉에서 얻은 정보를 종합하여 최종 답변 도출
멀티-모달 데이터의 통합과 추론을 통해 정확한 답변 제공

 

딥러닝

고전적인 머신러닝 개념을 제외하면 아래와 같습니다.

머신러닝 = 딥러닝 (지도, 비지도 학습) + 강화 학습

데이터 0 정답 0 : 지도학습

데이터 0 정답 x : 비지도학습  

데이터 x : 강화학습  

 

학습률 : 적으면 local minima 에 빠질 수 있고, 크면 발산 overshooting 

 

주요한 정규화 기법으로는 다음과 같은 것들이 있습니다:

L1 정규화(L1 Regularization): 모델의 손실 함수에 L1 norm을 추가하여 희소성을 유도합니다. 이는 불필요한 특징(feature)을 제거하고 모델의 복잡성을 감소시키는 효과가 있습니다.

L2 정규화(L2 Regularization): 모델의 손실 함수에 L2 norm을 추가하여 파라미터의 값들이 작아지도록 유도합니다. 이는 가중치(weight)들을 균등하게 분포시키고 모델의 과적합을 방지하는 역할을 합니다.

Dropout: 학습 과정 중에 랜덤하게 일부 뉴런을 비활성화시키는 방법입니다. 이는 앙상블 효과를 가지며, 다양한 뉴런들의 조합을 학습하여 모델을 강력하고 안정화된 상태로 만듭니다.

배치 정규화(Batch Normalization): 각 미니배치(batch) 단위로 입력 데이터의 평균과 분산을 정규화하는 방법입니다. 이는 학습 과정에서 그래디언트의 안정성을 향상시키고, 더 빠른 학습과 일반화 성능 향상을 도모합니다.

이외에도 데이터 확장(Data Augmentation), 조기 종료(Early Stopping), 가중치 감쇠(Weight Decay) 등의 기법들도 모델의 안정화에 기여할 수 있습니다. 이러한 정규화 기법들은 모델이 더 일반적인 패턴을 학습하도록 유도하고, 일반화 성능을 향상시키는 데 도움을 줍니다.

 

학습절차

무작위 초기화 

입력에 대한 예측 -> 예측값 및 정답 -> 손실함수계산 (forward propagation)

손실 -> 최적화 알고리즘 -> 업데이트 (backward propagation) -> 모델 가중치 -> 입력에 대한 예측

 

Momentum

기울기 벡터를 올바른 방향으로 가속화하여 수렴 속도를 높이는 방법

 

SGD (각 스텝에서 무작위로 선택한 하나의 샘플에 대해 그래디언트를 계산하고 파라미터를 업데이트) with Momentum은 일반적인 SGD와는 달리, 매개변수 업데이트 시 현재 기울기와 이전에 계산된 모멘텀 벡터의 일부를 고려합니다. 이를 통해 그레디언트의 방향을 보다 일관되게 유지하고, 지역 최적점에서의 빠른 탈출과 전역 최적점에 빠르게 수렴하는 효과를 보입니다.

일반적으로 SGD 와 배치경사하강법을 절충한 미니배치경사하강법을 씁니다.

 

 

전처리

먼저 말뭉치 (corpus) 수집을 해야 합니다. 말뭉치가 크고 오류가 적어야 더 높은 성능을 냅니다.

수집된 데이터를 필터링 등 정제 작업을 거치는데, 이때 학습 목적에 맞는 형태 및 필요한 정보로 적절한 작업이 필요합니다.

문장 단위 분리 후 분절(tokenization)을 거칩니다.

 

문장 - 어절(단어) - 형태소 - 음절 - 자소

 

단어 임베딩

원핫인코딩 처럼 하나의 1을 통해 토큰을 표현(인코딩) 하는 어휘사전은 두 문장의 유사도를 구할 수 없습니다.

해결방법은 밀집(dense) 벡터를 사용 (단어 임베딩) 하는 것입니다