data_analysis:statistics_and_machine_learning

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

data_analysis:statistics_and_machine_learning [2024/07/04 05:45] – [LLM] prgramdata_analysis:statistics_and_machine_learning [2025/07/07 14:12] (current) – external edit 127.0.0.1
Line 718: Line 718:
 [[data_analysis:transfer_learning]] [[data_analysis:transfer_learning]]
  
 +
 +=== self-supervised learning ===
 +자기지도학습
 +
 +**< 데이터의 일부를 보고 나머지를 예측하는 self-prediction> **
 +- GPT를 비롯한 웨이브넷, XLNet, PixcelCNN 등의 모델들은 자동회귀(autoregressive) 생성 모델들이다. 이전까지의 결과값을 기반으로 다음 값을 예측하는 방식을 사용한다
 +- GPT와 양대산맥을 이루고 있는 BERT 및 디노이징 오토인코더, 마스크드 오토인코더, simMIM 모델들은 마스크드 생성 모델들이다. 전체 데이터의 일부를 가리고, 나머지를 기반으로 가려진 영역을 유추하도록 학습된다
 +- 샘플에 변형(회전, 순서 섞기)을 주고 어떤 변형이 가해졌는지 원본을 찾게 하는 내재 관계 예측(innate relationship prediction) 모델
 +
 +**< 데이터 사이의 관계를 예측하는 contrastive learning > **
 +데이터 하나를 기준으로 해당 데이터를 변형한 것은 positive pair, 그 외의 데이터는 negative pair로 둔다. 그 뒤 기준이 되는 데이터와 positive pair는 가까워지고, negative pair와는 멀어지도록 학습시킨다. (Cosine similarity)
 ===AutoEncoder=== ===AutoEncoder===
 https://chioni.github.io/posts/ae/ https://chioni.github.io/posts/ae/
Line 730: Line 741:
  
 ====Vision==== ====Vision====
 +
 +생성 모델은 식별 모델과 입출력이 반대. 식별 모델은 이미지를 보고 어떻게 분류를 할 건지 “자연어로 된 출력물”을 생성. 
 +반면, 생성 모델은 자연어로를 입력값으로 이미지를 생성. 그런데 이미지는 자연어보다 많은 숫자 데이터를 내포(임베딩 벡터). 
 +많은 숫자에서 적은 숫자를 뽑아내는 함수보다 적은 숫자에서 많은 숫자를 뽑아내는 함수가 더 어렵기에 생성 모델의 난이도가 더 높음. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 (GAN) 이미지 생성의 속도가 빠르고, 고품질의 이미지를 생성할 수 있으나 학습 과정이 불안정하고 생성하는 이미지의 다양성이 저조 (GAN) 이미지 생성의 속도가 빠르고, 고품질의 이미지를 생성할 수 있으나 학습 과정이 불안정하고 생성하는 이미지의 다양성이 저조
 (VAE) 이미지 생성 속도가 빠르고, 다양한 이미지를 생성할 수 있으나 이미지의 품질이 다소 부족 (VAE) 이미지 생성 속도가 빠르고, 다양한 이미지를 생성할 수 있으나 이미지의 품질이 다소 부족
Line 735: Line 752:
  
 ===GAN=== ===GAN===
 +Generative Adversarial Networks, 생성적 적대 신경망
 GAN은 이미지를 임의로 생성하는 생성기(Generator)와 생성된 이미지에 대한 진위를 구별하는 판별기(Discriminator)가 서로 경쟁적(적대적)으로 학습하는 이미지 생성 모델 GAN은 이미지를 임의로 생성하는 생성기(Generator)와 생성된 이미지에 대한 진위를 구별하는 판별기(Discriminator)가 서로 경쟁적(적대적)으로 학습하는 이미지 생성 모델
 - GAN 생성기의 입력은 대체로 무작위 변수가 기반으로써, 생성 이미지 역시 무작위일 가능성이 크다는 것을 의미 - GAN 생성기의 입력은 대체로 무작위 변수가 기반으로써, 생성 이미지 역시 무작위일 가능성이 크다는 것을 의미
-※ 예컨대 사용자가 의자 이미지에서 의자의 색상을 의도적으로 바꾸고자 하여도 기존 GAN 
  
 +이미지 합성과 스타일 전이는 위에서 언급한 잠재공간에서 표현된 숫자들을 조절해가면서 원하는 결과값을 얻는 과정으로 이해
 +하면 된다. 이를 N차원의 벡터값을 조작하는 잠재공간편집(latent space editing)이라고 부른다. 
 +GAN을 사용하여 특정 인물의 사진에 다른 헤어스타일을 입히려고 할 때, 먼저 모델의 헤어스타일이 포함된 잠재공간의 벡터를 찾아야 한다. 이를 위해 여러 이미지를 통해 머리 스타일 차원을 학습하고, 이 차원을 조작하여 원하는 스타일로 변경해, 해당 인물의 사진에 새로운 머리 스타일이 입혀진 이미지를 생성할 수 있다. 
 +
 +GAN이 가장 많이 기여한 것이 바로 이미지 합성 분야다. 두 개의 다른 이미지를 합성하여 새로운 이미지를 생성하는 데 GAN이 사용된다. 예를 들어, 풍경 사진에 구름을 추가하려고 한다면, GAN을 사용하여 풍경 이미지와 구름 이미지의 잠재공간의 벡터를 얻은 뒤, 두 벡터 값을 적절하게 결합해 새로운 벡터를 생성한다. 이후 새로운 벡터를 디코딩하면 원래 풍경 이미지에 구름이 있는 새로운 이미지를 얻는다. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +[[data_analysis:GAN]]
 ===VAE=== ===VAE===
 AE는 데이터 압축과 특징 추출에 주로 사용되는 반면, VAE는 데이터의 확률적 모델링과 새로운 데이터 생성에 더 적합합니다. AE는 데이터 압축과 특징 추출에 주로 사용되는 반면, VAE는 데이터의 확률적 모델링과 새로운 데이터 생성에 더 적합합니다.
Line 756: Line 781:
 [이미지생성 AI의 진화(2022), nipa] [이미지생성 AI의 진화(2022), nipa]
  
 +===Diffusion_model===
 +[[data_analysis:Diffusion_model]]
  
 +레이턴트디퓨전 모델(LDM: latent diffusion model)과 스테이블 디퓨전 모델(SDM: stable diffusion model)이 있다.
 +LDM과 SDM 모델은 약간의 구현 및 학습 방식의 차이일 뿐, 전반적인 개념은 매우 유사하다. 둘 다 ‘무작위 노이즈 이미지로부터 시작’하여 점진적으로 사실적인 최종 이미지로 변환하는 프로세스를 거친다. 
 +LDM과 SDM은 목적과 사용 사례에 따라 각기 장점이 있는 생성 모델이다. 따라서 LDM과 SDM 중 어느 것이 더 우수하다고 평가할 수는 없고, 사용 사례와 기술적 요구 사항에 따라 달라진다
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
  
 +
 +
 +===스타일 전이===
 +[[https://lsoovmee-rhino.tistory.com/entry/VISION-%EB%B9%84%EC%A0%84-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%84-%EC%9C%84%ED%95%9C-%EB%94%A5%EB%9F%AC%EB%8B%9D9-%EB%94%A5%EB%93%9C%EB%A6%BC%EA%B3%BC-%EC%8B%A0%EA%B2%BD-%EC%8A%A4%ED%83%80%EC%9D%BC-%EC%A0%84%EC%9D%B4|스타일전이]]
 +스타일 전이를 구현하는 방법은 일반적인 딥러닝 알고리즘의 구현 방법과 크게 다르지 않다. 먼저 우리가 원하는 목표를 가리키는 손실 함수를 정의하고, 이 손실 함수를 최적화함으로써 스타일 전이를 수행한다.
 +
 +스타일 전이에서의 목표는 원본 이미지의 콘텐츠를 보존하면서 참조 이미지의 화풍을 적용하는 것이다. 나머지는 콘텐츠와 화풍을 수학적으로 표현하고, 손실 함수를 정의하여 이를 최적화하는 것이다.
 +
 +손실 함수를 정의할 때 가장 중요한 점은 한쪽 이미지에는 콘텐츠를 보존하고 다른 이미지에는 화풍을 보존해야 하는 것이다.
 +
 +- 콘텐츠 손실: 콘텐츠 이미지와 통합 이미지 사이에 계산되는 손실. 이 손실을 최소화하면 원본 이미지의 콘텐츠가 통합 이미지에 더 많이 보존된다.
 +- 스타일 손실: 스타일 이미지와 통합 이미지 사이에 계산되는 손실. 이 손실을 최소화 하면 통합 이미지의 화풍이 스타일 이미지와 비슷해진다.
 +- 노이즈 손실: 총 분산 손실이라고도 한다. 통합 이미지에 포함된 노이즈 양을 측정한 값이다. 이 손실을 최소화 하면 이미지가 매끄러워진다.
 +
 +총 손실을 다음과 같이 계산된다.
 +
 +총_손실 = [스타일(스타일_이미지) - 스타일(통합_이미지)] + [콘텐츠(원본_이미지) - 콘텐츠(통합_이미지)]  + 총 분산 손실
 +
 +앞서 정의한 총 손실을 최소화하는 신경망 학습 방법을 이해해 보자.
  
 ====LLM==== ====LLM====
Line 763: Line 813:
 - 이를 극복하기 위해 장단기기억, 순환게이트 유닛 등 방안이 고안되었으나, 입력 시퀀스 길이가 길어지며 계산량 증가로 이어져 효율성이 낮아지는 한계가 존재 - 이를 극복하기 위해 장단기기억, 순환게이트 유닛 등 방안이 고안되었으나, 입력 시퀀스 길이가 길어지며 계산량 증가로 이어져 효율성이 낮아지는 한계가 존재
  
 +- CNN은 합성곱필터라는 장치를 이용해서 시퀀스의 ‘지역적인 특성’을 짚어내는 모델이다. 다음 단어 맞히기 과정에서, 특정 단어를 기준으로 주변의 단어들을 보고 문맥을 결정하는 식이다. 그런데 이 합성곱 필터 크기를 넘어서는 문맥은 읽어내기가 어렵다. 그리고 RNN은 시퀀스 길이가 길어질수록 오래 전에 입력된 단어는 잊어버리거나, 마지막 단어의 의미에 너무 많은 비중을 쏟는 문제가 생긴
 +다는 단점이 있다
 +- 트랜스포머는 ‘문장 전체’ 안에서 단어들간의 ‘관계를 파악’하는 방식이다. 트랜스포머 모델은 기존의 CNN과 RNN을 사용하지 않고, “어텐션”이라는 메커니즘만을 사용한다. 
 +[20230331_Everything Everywhere All at Once AI가 불러온 신산업 혁명_미래에셋증권]
 +
 +- 트랜스포머의 핵심은 셀프어텐션(Self-attention)으로 문장에 나열된 단어간 연관성을 파악하는 역할을 수행하여 단어 중요도에 따른 ‘집중’여부를 판단
 [[data:analysis:Attention]] [[data:analysis:Attention]]
 +시퀀스라는 시계열적인 속성을 다수의 어텐션 헤드로 치환하여 장기 의존성을 해결하기 위한 방법론으로 활용하며, 용이한 병렬처리로 계산상의 효율을 확보
 +[기술동향 2023 인공지능(2023), KISTEP]
  
 BERT 학습방법 https://happy-obok.tistory.com/23 BERT 학습방법 https://happy-obok.tistory.com/23
Line 770: Line 828:
 [[data_analysis:GPT]] [[data_analysis:GPT]]
 - 디코더만 사용 - 디코더만 사용
 +- Large model이면 디코더만 있어도 decoder-only models can internally encode necessary context from prior tokens, reducing the need for an explicit encoder.
 +- Decoder-only models still leverage self-attention (though in a causal form), allowing them to capture dependencies efficiently.
 +- Many tasks that traditionally required encoder-decoder architectures can now be handled end-to-end with a sufficiently large decoder-only model.
 +- With enough training data, a decoder-only model learns latent representations of input text similar to an encoder but in a more flexible, autoregressive way.
 +
 +=== 유사도 Encoder ===
 +**Cross-Encoder:**
 +1. 구조: 두 문장을 동시에 하나의 인코더에 입력하여 처리합니다[1].
 +2. 성능: 일반적으로 더 높은 정확도를 보입니다. 문맥을 고려하므로 더 나은 검색 성능을 제공할 수 있습니다[2].
 +3. 처리 방식: 질의와 문서 쌍을 함께 입력으로 받아 처리합니다. 입력 형식은 "[CLS]질의[SEP]문서[SEP]"입니다[2].
 +4. 단점: 계산 비용이 높고 처리 시간이 많이 소요됩니다. 특히 큰 데이터셋에서는 사용하기 어렵습니다[2].
 +
 +**Bi-Encoder:**
 +1. 구조: 두 문장을 별도의 인코더로 독립적으로 처리합니다[1].
 +2. 성능: Cross-Encoder보다 정확도가 다소 낮을 수 있지만, 실제 사용에 더 유리합니다[3].
 +3. 처리 방식: 문서와 질의를 각각 별도로 인코딩한 후, 유사도를 측정하여 관련성이 높은 문서들을 찾습니다[2].
 +4. 장점: 문서들을 미리 임베딩하여 저장해놓을 수 있어, 실제 검색 시 질의에 대해서만 임베딩한 후 유사도 측정을 진행하면 되므로 소요 시간이 비교적 적습니다[2].
 +5. 확장성: 대규모 데이터셋에 적합하며, 쉽게 확장할 수 있습니다[4].
 +결론적으로, Cross-Encoder는 높은 정확도를 제공하지만 처리 속도와 확장성에 제한이 있습니다. Bi-Encoder는 빠른 처리 속도와 높은 확장성을 제공하지만 정확도가 다소 낮을 수 있습니다. 따라서 작업의 특성과 요구사항에 따라 적절한 모델을 선택해야 합니다[5].
 +
 +Citations:
 +[1] https://velog.io/%40xuio/Cross-Encoder%EC%99%80-Bi-Encoder-feat.-SentenceBERT
 +[2] https://nlp.jbnu.ac.kr/AIJBNU2023/slides/aijbnu2023_denseretrieval.pdf
 +[3] https://ydy8989.github.io/2021-08-11-polyencoder/
 +[4] https://acdongpgm.tistory.com/353
 +[5] https://velog.io/%40tobigs-nlp/Poly-Encoder
 +
 +실제 응용에서는 두 방식을 결합하여 사용하는 경우도 많습니다. 예를 들어, 대규모 검색에서는 Bi-Encoder를 사용하여 초기 검색을 수행한 후, 상위 결과에 대해 Cross-Encoder를 적용하여 더 정확한 순위를 매기는 방식을 사용할 수 있습니다. 이렇게 함으로써 Bi-Encoder의 효율성과 Cross-Encoder의 정확성을 모두 활용할 수 있습니다.
  
  
  • data_analysis/statistics_and_machine_learning.1720071923.txt.gz
  • Last modified: 2025/07/07 14:12
  • (external edit)