RAPTOR: Recursive Abstractive Processing for Tree-Organized Retrieval 이해하기

1. 문제의 배경

기존의 검색 기반 언어 모델(Retrieval-Augmented Language Models)은 보통 문서를 고정 길이의 짧은 청크(예: 100토큰)로 나눈 후, 이들 중 몇 개만 선택해 LLM(대형 언어 모델)에 입력합니다.
이러한 방식은 문서 전체의 구조나 주제의 흐름, 여러 부분에 걸친 연관 정보를 포착하기 어렵다는 한계가 있습니다. 예를 들어, 긴 이야기나 책 전체의 맥락을 이해해야 하는 질문에 대해 단편적인 정보만 가져온다면, 충분한 답변을 제공하기 어렵게 됩니다.


2. RAPTOR의 핵심 아이디어

RAPTOR (Recursive Abstractive Processing for Tree-Organized Retrieval)는 문서를 단순한 청크의 집합이 아니라, 여러 수준의 추상화를 갖는 트리 구조로 재구성합니다.
즉, 문서를 아래와 같은 단계로 처리합니다.

  1. 청크 분할
    • 문서를 문장이 중간에 잘리지 않도록 주의하면서 일정 크기의 청크로 나눕니다.
  2. 임베딩 및 클러스터링
    • 각 청크를 SBERT와 같은 임베딩 모델로 벡터화합니다.
    • 고차원 임베딩의 문제를 해결하기 위해 UMAP(Uniform Manifold Approximation and Projection)으로 차원 축소 후, Gaussian Mixture Models (GMM)을 이용해 소프트 클러스터링을 수행합니다.
    • 소프트 클러스터링 덕분에 한 청크가 여러 군집에 속할 수 있어, 문서의 복합적 주제를 보다 유연하게 반영할 수 있습니다.
  3. 모델 기반 요약
    • 클러스터에 속한 청크들을 LLM(예: gpt-3.5-turbo)을 사용하여 요약합니다.
    • 이 요약문은 해당 클러스터(노드)의 대표 내용이 되며, 상위 노드로 올라가게 됩니다.
  4. 재귀적 적용
    • 위의 과정을 반복하여, 하위 청크들이 모여 상위 요약을 형성하고, 최종적으로 문서를 전체적으로 대표하는 트리 구조가 완성됩니다.
    • 트리의 리프 노드는 원문 청크를, 부모 노드는 그 청크들을 요약한 정보를 담습니다.

3. 질의 응답 시의 활용 방식

문서 전체를 계층적으로 요약해 놓은 트리를 기반으로, 사용자 질의에 대해 두 가지 방식으로 정보를 검색합니다.

① 트리 순회 방식 (Tree Traversal)

  • 과정:
    1. 트리의 최상위(루트) 노드부터 시작해, 각 노드와 질의의 코사인 유사도를 계산합니다.
    2. 가장 유사도가 높은 상위 노드들을 선택한 후, 그 자식 노드들에서 다시 코사인 유사도가 높은 노드를 선택합니다.
    3. 이런 식으로 하위 레벨로 내려가면서 점점 구체적인 정보를 모읍니다.
  • 장점:
    • 질문에 맞는 적절한 추상화 수준(상위 주제부터 하위 세부사항까지)을 순차적으로 제공할 수 있습니다.

② Collapsed Tree 방식

  • 과정:
    • 트리의 모든 노드를 하나의 평면(플랫)으로 펼친 후, 전체 노드 중 질의와의 코사인 유사도가 높은 순서로 선택합니다.
    • 선택된 노드들을 이어붙여 최대 토큰 수에 맞게 정보를 구성합니다.
  • 장점:
    • 모든 레벨의 정보를 한 번에 고려할 수 있어, 특히 정보의 세부 조정이 필요한 질문에 더 유연하게 대응합니다.
    • 실제 실험에서는 이 방식이 더 우수한 성능을 보였습니다.

4. RAPTOR의 주요 장점과 실험 결과

  • 종합적 문맥 이해:
    • 단순 청크 기반 검색보다 문서 전체의 주제 및 세부 정보를 동시에 활용할 수 있습니다.
  • 효율성:
    • 트리 구조 구축 과정은 선형 시간 복잡도로, 대용량 문서 처리에 적합합니다.
  • 실험 결과:
    • NarrativeQA, QASPER, QuALITY와 같은 다양한 QA 데이터셋에서 기존 retrieval 방식보다 뛰어난 성능을 보였습니다.
    • 특히, GPT-4와 함께 사용할 경우 QuALITY 벤치마크에서 약 20%의 성능 향상이 확인되었습니다.
  • 추가 고려사항:
    • 요약 과정에서 약 4% 정도의 경미한 허위 정보(hallucination)가 발생할 수 있으나, 상위 노드로 집계되면서 그 영향은 크게 줄어듭니다.

5. 추가 배경 및 관련 연구

  • 기존 방법과의 차별점:
    • 전통적인 retrieval 방식은 단순히 문서의 인접한 청크만을 사용해 정보 검색을 수행하는 반면, RAPTOR는 문서의 여러 부분에서 멀리 떨어진 연관 정보를 효과적으로 그룹화하여, 보다 포괄적이고 계층적인 문맥 정보를 제공합니다.
  • 유사 연구:
    • 최근 연구에서는 대형 언어 모델에 retrieval augmentation을 적용해 최신 정보와 긴 문맥을 처리하려는 시도가 많았습니다.
    • RAPTOR는 이런 노력 중 하나로, 단순 청크 기반 접근 방식의 한계를 극복하고, 다단계 추론이 필요한 복잡한 질문에 대해 우수한 성능을 발휘합니다.

결론

RAPTOR는 문서를 단순한 청크들의 나열이 아니라, 다양한 추상화 수준을 가진 트리 구조로 재구성하여, 질문에 맞는 적절한 정보(상위 주제부터 세부사항까지)를 효과적으로 검색하는 혁신적인 방법입니다. 이 방식은 긴 문서나 복잡한 텍스트를 다룰 때, 기존의 retrieval 기법보다 훨씬 더 포괄적이고 정교한 답변을 생성할 수 있도록 도와줍니다.

이와 같이, RAPTOR는 retrieval-augmented 언어 모델의 한계를 극복하고, 다단계 추론 및 복잡한 질문 응답 시스템에서 중요한 진전을 이루고 있다고 할 수 있습니다.

https://arxiv.org/pdf/2401.18059

증류(distillation)

증류(Distillation)는 대규모 언어 모델(LLM)의 성능을 향상시키기 위해 사용되는 중요한 학습 기법 중 하나입니다. 이 기법은 주로 더 큰 모델의 지식을 작은 모델로 전달하여 최종적으로 더 효율적이고 빠른 모델을 만드는 데 목적이 있습니다. 증류 기법은 주로 두 단계로 이루어집니다. 첫 번째 단계는 교사 모델(teacher model)로부터 지식을 추출하는 것이고, 두 번째 단계는 학생 모델(student model)을 학습시켜 원본 모델의 지식을 습득하게 하는 것입니다.

증류 과정의 핵심 개념

  1. 교사 모델과 학생 모델
    • 교사 모델 : GPT-4, BERT와 같은 대형 모델로, 높은 정확도를 가지지만 추론 비용이 큽니다.
    • 학생 모델 : 교사보다 레이어 수나 파라미터가 적은 소형 모델로, 경량화되어 실용적 배포가 가능합니다.
  2. 소프트 타겟(Soft Target)
    • 교사 모델의 지식을 습득하기 위해, 교사 모델의 출력 확률 분포를 학생 모델의 학습 대상으로 사용합니다.
    • 예: “강아지가 공을 물고 있다”라는 문장 생성 시, 교사 모델은 강아지(70%), 고양이(20%), 동물(10%)처럼 클래스 간 관계를 포함한 확률을 출력합니다.
    • 온도 조절(Temperature Scaling) : 확률 분포 즉, 교사 모델의 출력을 부드럽게 만들기 위해 소프트맥스 함수에 온도 계수 ( T )를 적용합니다.
      • ( T > 1 )이면 확률 분포가 평탄해져 학생이 세부적인 관계를 학습하기 용이합니다.
  3. 손실 함수(Loss Function)
    • 학생 모델은 두 가지 손실을 최소화합니다:
      • 교사와의 증류 손실 : 교사의 소프트 타겟과 학생 예측의 KL 발산(KL-Divergence).
      • 실제 라벨 손실 : 원본 데이터의 정답(하드 타겟)과의 교차 엔트로피.

증류 예시: 텍스트 분류 작업

  1. 교사 모델 준비
    • GPT-3를 IMDb 영화 리뷰 감성 분석(긍정/부정)에 미세 조정합니다.
  2. 소프트 타겟 생성
    • 학습 데이터를 GPT-3에 입력해 각 샘플의 확률 분포(예: 긍정 85%, 부정 15%)를 추출합니다.
  3. 학생 모델 학습
    • DistilBERT와 같은 소형 모델을 두 손실의 가중합으로 학습시킵니다:
      • Loss=α⋅KL-Divergence(교사,학생)+(1−α)⋅Cross-Entropy(라벨,학생)
    • 온도 ( T=2 )를 적용해 확률 분포를 부드럽게 합니다.

증류의 장점과 활용 사례

  • 장점
    • 추론 속도 향상: 학생 모델은 교사 대비 60% 이상 경량화되며, GPU 메모리 사용량이 감소합니다.
    • 에지 디바이스 배포: 스마트폰이나 IoT 기기에서도 LLM 기능 사용이 가능해집니다.
    • 데이터 효율성: 원본 데이터 없이 교사의 출력만으로도 학생을 학습시킬 수 있습니다(데이터 프라이버시 보호).
  • 활용 사례
    • DistilGPT-3 : GPT-3의 40% 크기로 95% 성능 유지.
    • TinyBERT : BERT 대비 7.5배 작지만 GLUE 벤치마크에서 96% 성능 달성.
    • 모바일 번역기 : 대형 번역 모델을 증류해 스마트폰에 탑재.

증류의 유형

  1. 오프라인 증류
    • 교사 모델이 미리 학습된 후 고정된 상태에서 학생을 학습시킵니다.
  2. 온라인 증류
    • 교사와 학생이 동시에 학습되며, 서로의 예측을 참조합니다(예: Mutual Learning).
  3. 자기 증류(Self-Distillation)
    • 동일 모델의 깊은 버전이 얕은 버전을 가르칩니다(계층적 지식 전달).

한계와 극복 방안

  • 성능 격차 : 학생 모델이 교사의 복잡한 추론을 완전히 흉내 내지 못할 수 있습니다.
    • 해결 : 어텐션 맵 증류(Attention Distillation)로 모델 내부의 집중 메커니즘을 전달합니다.
  • 과적합 위험 : 학생이 교사의 노이즈까지 학습할 수 있습니다.
    • 해결 : 데이터 증강이나 교사 앙상블로 일반화 성능을 높입니다.

결론

지식 증류는 리소스 제약 환경에서도 LLM의 강력한 성능을 활용할 수 있게 하는 핵심 기술입니다. 교사 모델의 “암묵적 지식”을 전달함으로써, 소형 모델은 적은 자원으로도 높은 효율성을 달성할 수 있습니다.

Mixture of Experts (MoE)

1. 개요
Mixture of Experts (MoE)는 여러 전문가(Expert) 모델을 협업시키는 머신러닝 기법입니다. 각 전문가는 입력 데이터의 특정 부분을 처리하도록 특화되며, **게이팅 네트워크(Gating Network)**가 입력에 따라 적절한 전문가를 선택하거나 가중치를 부여합니다. 이는 모델 용량을 늘리며 계산 비용을 절약하는 데 효과적입니다.


2. 주요 구성 요소

  • 전문가(Experts) :
    • 일반적으로 동일한 구조의 신경망(예: Transformer 레이어)으로 구성됩니다.
    • 각 전문가는 특정 입력 패턴(예: 이미지의 특정 영역, 텍스트의 특정 주제)에 특화됩니다.
  • 게이팅 네트워크(Gating Network) :
    • 입력을 분석하여 각 전문가의 기여도(가중치)를 결정합니다.
    • 주로 Softmax 또는 Top-k Routing 을 사용해 일부 전문가만 활성화합니다.
    • 예: Switch Transformer에서는 각 입력이 1개의 전문가 로만 라우팅됩니다.

3. 동작 원리

  1. 입력 분배 : 게이팅 네트워크가 입력 ( x )를 분석해 전문가의 가중치를 계산합니다.
    • 예: 가중치=Softmax(Wg​⋅x+bg​).
  2. 전문가 실행 : 선택된 전문가들이 입력을 처리합니다.
    • Top-k 라우팅 시 ( k )명의 전문가만 활성화됩니다.
  3. 결합 : 전문가들의 출력을 가중합하여 최종 결과를 생성합니다.
    • y=∑i=1nwi​⋅Ei​(x), 여기서 ( w_i )는 게이팅 가중치, ( E_i )는 전문가.

4. 학습 방법

  • 동시 학습 : 전문가와 게이팅 네트워크를 함께 훈련시킵니다.
  • 그래디언트 역전파 : 게이팅 네트워크는 전문가 선택에 대한 그래디언트를 학습합니다.
  • 주요 도전 과제 :
    • 전문가 불균형(Expert Imbalance) : 일부 전문가만 주로 사용되는 문제.
      → **부가 손실(Auxiliary Loss)**로 전문가 사용 분포를 균형 있게 유도합니다.
    • 학습 불안정성 : 게이팅의 갑작스러운 변화가 학습을 방해할 수 있습니다.
      노이즈 추가 또는 지연 업데이트 기법으로 안정성을 높입니다.

5. 장점과 단점

  • 장점 :
    • 효율적 확장 : 모델 파라미터는 증가하지만, 활성화되는 전문가 수는 제한되어 계산 비용이 절약됩니다.
    • 전문화된 예측 : 각 전문가가 복잡한 데이터 분포의 일부를 효과적으로 처리합니다.
  • 단점 :
    • 구현 복잡성 : 분산 시스템에서 전문가 간 통신 오버헤드가 발생할 수 있습니다.
    • 과적합 위험 : 전문가가 특정 데이터에 과도하게 적응할 수 있습니다.

6. 주요 변형 및 응용

  • 라우팅 기법 :
    • Top-k Routing (k=1인 경우 Switch Transformer).
    • Noisy Top-k : 라우팅에 무작위성을 추가해 탐색을 촉진합니다.
  • 응용 사례 :
    • NLP : Google의 Switch Transformer , GLaM (1.2조 파라미터).
    • 컴퓨터 비전 : Vision MoE, LIMoE (Large Image Mixture of Experts).
    • 멀티모달 : DeepSeek-MoE, Mixtral 8x7B (오픈소스 MoE LLM).

7. 최신 기술 동향

  • 효율성 개선 : GShard, T5-MoE 등에서 Expert Parallelism 을 도입해 분산 학습을 최적화합니다.
  • 동적 라우팅 : 입력에 따라 전문가 수를 유동적으로 조절하는 Adaptive MoE 가 연구되고 있습니다.
  • 경량화 : 적은 수의 전문가로도 성능을 유지하는 Lightweight MoE 구조가 주목받고 있습니다.

8. 결론
MoE는 대규모 모델의 효율적인 확장을 가능하게 하는 핵심 기술입니다. 게이팅 메커니즘과 전문가 특화 학습을 통해 계산 자원을 절약하면서도 복잡한 작업을 처리할 수 있습니다. 하지만 구현 복잡성과 전문가 불균형 문제는 여전히 개선이 필요한 분야입니다.

MLA(Multi-Head Latent Attention) 쉽게 이해하기(with예시)

멀티헤드 어텐션에서 각 헤드(Head)가 서로 다른 가중치를 사용한다는 것은, 각 헤드마다 독립적인 쿼리(Query)키(Key)밸류(Value) 변환 행렬을 갖는다는 의미입니다. 이를 구체적인 예시와 함께 설명하겠습니다.


1. 입력 데이터 예시

  • 입력 문장: "The cat sat on the mat."
  • 각 단어의 임베딩 벡터를 아래와 같이 가정합니다.
    • The: [0.2, 0.5, 0.1]
    • cat: [0.7, 0.3, 0.4]
    • sat: [0.4, 0.6, 0.2]
    • on: [0.1, 0.8, 0.3]
    • the: [0.3, 0.2, 0.9]
    • mat: [0.5, 0.4, 0.7]

2. 멀티헤드 어텐션 구조 (2개 헤드 가정)

  • 헤드 1과 헤드 2는 각각 다른 가중치 행렬로 입력을 변환합니다.
    • 예시 가중치 행렬 (3차원 → 2차원으로 변환):
      • 헤드 1의 가중치:
        • WQ1 ​: [[0.1,0.2], [0.3,0.4], [0.5,0.6]]
        • WK1 ​: [[0.2,0.1], [0.4,0.3], [0.6,0.5]]
        • WV1 ​: [[0.3,0.4], [0.5,0.6], [0.7,0.8]]
      • 헤드 2의 가중치:
        • WQ2 ​: [[0.6,0.5], [0.4,0.3], [0.2,0.1]]
        • WK2 ​: [[0.5,0.6], [0.3,0.4], [0.1,0.2]]
        • WV2 ​: [[0.8,0.7], [0.6,0.5], [0.4,0.3]]

3. 헤드별 계산 과정

헤드 1의 계산

  1. 쿼리(Q1), 키(K1), 밸류(V1) 생성:
    • 예: 단어 cat의 쿼리 계산
      Qcat1 = cat 임베딩×WQ1 = [0.7, 0.3, 0.4]×WQ1 = [0.7∗0.1+0.3∗0.3+0.4∗0.5, 0.7∗0.2+0.3∗0.4+0.4∗0.6] = [0.07+0.09+0.2 = 0.36, 0.14+0.12+0.24 = 0.5]
      → Qcat1 = [0.36,0.5]
    • 모든 단어에 대해 Q1, K1, V1를 계산합니다.
  2. 어텐션 스코어 계산:
    • cat과 sat의 어텐션 스코어 예시:
      Score1 = Qcat1⋅Ksat1 = [0.36,0.5]⋅[Ksat1]
      → 헤드 1은 cat과 sat의 위치적 관계(예: 문법적 구조)에 집중할 수 있습니다.

헤드 2의 계산

  1. 쿼리(Q2), 키(K2), 밸류(V2) 생성:
    • 예: 단어 cat의 쿼리 계산
      Qcat2 = cat 임베딩×WQ2 = [0.7, 0.3, 0.4]×WQ2 = [0.7∗0.6+0.3∗0.4+0.4∗0.2, 0.7∗0.5+0.3∗0.3+0.4∗0.1] = [0.42+0.12+0.08=0.62, 0.35+0.09+0.04=0.48]
      → Qcat2 = [0.62,0.48]
  2. 어텐션 스코어 계산:
    • cat과 mat의 어텐션 스코어 예시:
      Score2 = Qcat2⋅Kmat2 = [0.62,0.48]⋅[Kmat2]
      → 헤드 2는 cat과 mat의 의미적 관계(예: “고양이가 매트 위에 앉음”)에 집중할 수 있습니다.

4. 결과 통합

  • 헤드 1과 헤드 2의 결과를 결합합니다.
    • 예: cat에 대한 최종 어텐션 값
      • 헤드 1 결과: 위치적 관계 강조 → sat과 높은 어텐션
      • 헤드 2 결과: 의미적 관계 강조 → mat과 높은 어텐션
    • 두 결과를 연결(concatenate)하거나, 평균내어 최종 출력을 생성합니다.

핵심 요약

  1. 다양한 관점 포착:
    • 헤드 1: 문법적 구조 (예: 동사 sat과 명사 cat의 관계).
    • 헤드 2: 의미적 관계 (예: cat과 mat의 물리적 위치).
  2. 가중치의 역할:
    • 각 헤드의 WQ, WK, WV​가 다르기 때문에, 동일한 입력이라도 다른 방식으로 변환됩니다.
    • 예를 들어, 헤드 1의 가중치는 위치 정보를, 헤드 2의 가중치는 의미 정보를 추출하도록 학습됩니다.
  3. 실제 학습 과정:
    • 가중치 행렬은 초기에 랜덤하게 초기화되며, **역전파(backpropagation)**를 통해 최적화됩니다.
    • 모델은 태스크(예: 번역, 분류)에 맞게 각 헤드가 어떤 정보에 집중할지 자동으로 학습합니다.

예시 도식화

입력: "The cat sat on the mat"
       │
       ├─ 헤드 1 ──→ [위치적 관계 집중] → "cat" ↔ "sat"
       │
       └─ 헤드 2 ──→ [의미적 관계 집중] → "cat" ↔ "mat"

멀티헤드 어텐션은 다양한 유형의 관계를 병렬로 포착하여 모델의 성능을 향상시킵니다!

MLA(Multi-Head Latent Attention)의 이해

멀티헤드 잠재 어텐션(Multi-Head Latent Attention, MLA)은 딥러닝, 특히 자연어 처리(NLP)와 컴퓨터 비전에서 사용되는 어텐션 메커니즘의 한 종류입니다. 기존의 어텐션 메커니즘을 확장하여 여러 개의 “헤드”를 사용해 입력 데이터의 다양한 부분에 주의를 기울이는 방식입니다. 이를 통해 모델이 더 풍부한 정보를 포착하고, 성능을 향상시킬 수 있습니다.

기본 개념

  1. 어텐션 메커니즘: 어텐션은 입력 시퀀스의 각 요소에 대해 다른 요소들과의 상대적 중요도를 계산하는 방식입니다. 예를 들어, 문장에서 특정 단어가 다른 단어들과 얼마나 관련이 있는지를 평가합니다.
  2. 멀티헤드 어텐션: 멀티헤드 어텐션은 어텐션 메커니즘을 여러 번 병렬로 적용하는 방식입니다. 각 헤드는 서로 다른 가중치를 사용해, 입력 데이터의 다른 부분에 초점을 맞춥니다. 이를 통해 모델이 다양한 관점에서 정보를 수집할 수 있습니다.

특징

  1. 잠재 공간(Latent Space): MLA는 잠재 공간에서 어텐션을 수행합니다. 잠재 공간은 원본 데이터를 저차원으로 투영한 공간으로, 데이터의 중요한 특징을 더 잘 포착할 수 있습니다.
  2. 병렬 처리: 여러 헤드가 동시에 작동해 각각 다른 부분의 정보를 추출합니다. 이는 모델의 표현력을 크게 향상시킵니다.
  3. 정보 통합: 각 헤드에서 추출한 정보는 최종적으로 통합되어 모델의 출력을 생성합니다. 이를 통해 모델이 더 정확하고 강력한 예측을 할 수 있습니다.

작동 방식

  1. 입력 투영: 입력 데이터는 여러 개의 헤드로 분할되기 전에 잠재 공간으로 투영됩니다.
  2. 어텐션 계산: 각 헤드는 잠재 공간에서 독립적으로 어텐션 점수를 계산합니다. 이 점수는 입력 데이터의 각 부분이 얼마나 중요한지를 나타냅니다.
  3. 정보 통합: 각 헤드의 결과는 결합되어 최종 출력을 생성합니다. 이 과정에서 모델은 다양한 관점에서 수집한 정보를 종합적으로 활용합니다.

장점

  1. 다양한 정보 포착: 여러 헤드를 사용해 다양한 특징을 포착할 수 있어 모델의 표현력이 향상됩니다.
  2. 효율성: 병렬 처리를 통해 계산 효율성이 높아집니다.
  3. 유연성: 다양한 도메인과 작업에 적용할 수 있어 활용도가 높습니다.

결론

멀티헤드 잠재 어텐션(MLA)은 딥러닝 모델이 입력 데이터의 다양한 부분에 주의를 기울이는 강력한 도구입니다. 잠재 공간에서의 어텐션과 병렬 처리를 통해 모델의 성능과 효율성을 크게 향상시킬 수 있습니다. 이는 NLP와 컴퓨터 비전 등 다양한 분야에서 널리 활용되고 있습니다.

[랭킹] 2021년 1분기 과실류/과일과채류 kg당 단가 순위

2021년 1분기 과실류/과일과채류 kg당 단가 순위

* 농림축산식품부(농림수산식품교육문화정보원) 공공데이터(전국 33개소 공영도매시장 정산데이터) 기준
* 순위는 kg 당 단가 기준 내림차순으로 정렬함

농산물 도매가격-오케이팜

스마트폰에서 전국 농산물 도매시장의 경매정보를 빠르고 편하게 확인해보세요~
품목별 실시간 경락 정보 뿐만 아니라 거래순위와 요약정보를 제공하여 거래 흐름을 파악할 수 있습니다!!

  kg당 단가 변동률 순위거래량 변동률 순위    품목 거래 상세정보

■ 거래순위
– kg당 단가와 거래량별 거래 순위를 제공합니다.
– 순위는 최근 일주일 대비 거래의 변화가 큰 순서를 기준으로 합니다.
– 주요 품목 분류별(과실류, 과일과채류, 과채류, 엽경채류, 근채류, 조미채소류, 양채류, 산채류, 버섯류) 순위도 확인할 수 있습니다.

■ 경매 요약정보
– 품목별 원하는 날짜의 경매 정보를 요약하여 한눈에 보기 쉽게 제공합니다.
– 원하는 경매일의 최저/평균/최고 kg당 단가 정보와 최근 단가/거래량의 흐름을 그래프로 제공합니다.
– 등급/규격별 kg당 단가(최저/최고)와 거래량이 제공됩니다.
– 도매시장별로 거래를 비교할 수 있는 도매시장별 kg당 단가(평균/최저/최고)와 거래량 정보 제공됩니다.

■ 경락가격
– 품목별 원하는 날짜의 모든 경락 건별 정보를 확인할 수 있습니다.
– 경락 건의 도매시장/도매법인, 산지, 등급, 규격, 거래량(건수), kg당단가, 경락가격, 경매시각을 알 수 있습니다.
– 경락내역을 원하는 순서대로 정렬하여 볼 수 있습니다.
(kg당 단가/거래량/경매시각을 오름차순, 내림차순할 수 있습니다.)

■ 검색필터 설정
– 원하는 도매시장/도매법인, 산지, 등급, 규격 등을 선택하여, 해당 조건에 맞는 경매 요약정보와 경락가격을 확인할 수 있습니다.

■ 공유하기
– 현재 보고 있는 품목의 경매 정보를 지인들에게 카카오톡으로 공유할 수 있습니다.
– 카카오톡으로 공유된 이미지와 글을 클릭하면 앱에서 해당 경매 정보를 바로 확인할 수 있습니다.(앱이 설치되어 있지 않으면, 앱 설치화면으로 이동합니다.)

■ 관심품목 설정
– 원하는 품목의 경매 정보를 확인하기 위해, 품목검색을 하지 않고,
관심품목 설정만으로 언제든 빠르고 편하게 정보를 확인할 수 있습니다.
– 관심품목의 순서도 마음대로 설정하고, 원하지 않는 품목은 삭제할 수도 있습니다.

■ 최근조회 품목
– 최근 조회한 20개 품목 목록을 제공하여 쉽고 빠르게 원하는 정보를 다시 볼 수 있습니다.
– 원하지 않는 품목은 목록에서 삭제할 수 있습니다.

■ 품목검색
– 수많은 품목과 품종들 사이에서 키워드를 입력하여 빠르게 원하는 품목이나 품종을 찾을 수 있습니다.

■ 글자크게보기
– 글자가 작아 불편하다면, 클릭 한번으로 큰 글씨로 모든 정보를 볼 수 있습니다.

※ 모든 경매 정보는 농림축산식품부(농림수산식품교육문화정보원)에서 제공하는 공공데이터를 주기적으로 수집하여 제공되고 있습니다.

※ 제공되는 전국 공영도매시장(33개소)
강릉도매시장, 광주각화도매시장, 광주서부도매시장, 구리도매시장, 구미도매시장, 대구북부도매시장, 대전노은도매시장, 대전오정도매시장, 부산국제수산물도매시장, 부산반여도매시장, 부산엄궁도매시장, 서울가락도매시장, 서울강서도매시장, 수원도매시장, 순천도매시장, 안동도매시장, 안산도매시장, 안양도매시장, 울산도매시장, 원주도매시장, 익산도매시장, 인천구월도매시장, 인천삼산도매시장, 전주도매시장, 정읍도매시장, 진주도매시장, 창원내서도매시장, 창원팔용도매시장, 천안도매시장, 청주도매시장, 춘천도매시장, 충주도매시장, 포항도매시장

위드독(With Dog) – 반려견을 위한 날씨정보

오늘 사랑하는 반려견과 산책 하시나요?
지금 반려견과 산책을 해도 좋은지, 주의사항은 무엇인지 위드독(With Dog)에서 알려드립니다~
위드독(With Dog)은 반려견을 위한 날씨(현재 날씨, 날씨예보)와 미세먼지 정보를 제공합니다.
반려견 기온 등급과 미세먼지 등급을 바탕으로 제공되는, 현재 날씨 등급을 확인하고 산책하세요~~
(기온등급: 좋음, 보통, 주의, 위험, 매우위험)
(미세먼지등급: 좋음, 보통, 나쁨, 매우나쁨)

위드독(With Dog)은 반려견을 위한 사진공유 SNS 입니다.
사랑하는 우리 반려견의 이쁜 사진을 공유해 보세요~
친구들과 좋아요와 댓글을 통해 의견을 공유할 수 있습니다.
갤러리에 등록된 이쁜 강아지 사진은 휴대폰 배경화면으로 저장할 수 있습니다.

위드독(With Dog)은 학습된 인공지능(딥러닝) 모델을 통해 130종의 강아지 품종을 인식합니다.
반려견이 아닌 사진은 인공지능에 의해 필터링 되어 컨텐츠의 질을 보장할 수 있습니다.
사랑하는 우리 강아지가 어떤 견종과 유사한지 한번 확인해 보세요~
반려견 인식방법은 카메라 또는 앨범에서 강아지 사진을 선택만 하시면 됩니다.
또한, 강아지 품종 130종에 대한 사진과 설명도 보실 수 있습니다~

 

 

 

 

분류 모델 성능 평가 지표

  1. 정확도(Accuracy)
    • 모델이 샘플을 정확히 분류한 비율
    • 테스트 데이터가 불균형하거나 특정 클래스의 성능에 편중될 경우 좀 더 세밀한 평가 지표가 필요함
  2. 정밀도(Precision)
    • 모델이 긍정으로 분류한 샘플 중 실제 긍정인 비율
    • Positive 정답률
    • PPV(Positive Predictive Value)
  3. 재현율(Recall)
    • 실제 긍정 샘플 중 모델이 긍정으로 분류한 비율
    • Positive 검출률
    • sensitivity, hit rate, or TPR(True Positive Rate)
  4. Fall-out
    • 실제 부정 샘플 중 모델이 긍정으로 잘못 분류한 비율
    • Negative 오검출률
    • FPR(False Positive Rate), 1-특이도(Specificity, True Negative Rate)
  5. F1 score
    • 정밀도와 재현율의 조화  평균
    • 평가를 단일 숫자로 요약. but, 모델의 동작 방식을 잘 이해하려면 정밀도와 재현율을 함께 확인하는 것이 필요
  6. ROC(Receiver Operating Characteristic) Curve
    • 클래스 판별 기준값의 변화에 따른 Fall-out과 Recall의 변화를 시각화한 것
    • Recall이 크고, Fall-out이 작은 모형을 좋은 모형으로 생각할 수 있음
    • 곡선이 왼쪽 위 모서리에 가까울수록 모델 성능이 좋음
  7. AUC(Area Under the Curve)
    • ROC curve의 밑면적을 계산한 값
    • Fall-out 대비 Recall값이 클수록 AUC가 1에 가까운 값이며 우수한 모형

NUGOO 개발기(1) : 학습 데이터 준비하기(Data 수집 및 전처리)

일반적으로 Neural Network을 포함한 머신러닝을 통해 모델을 만든다고 할 때는
크게 지도 학습과 비지도 학습 방법이 있습니다.
지도 학습은 가르칠 데이터셋을 정리해서(labeled datasets) 학습을 시키는 방법이고, 비지도 학습은 (정리되지 않은) 데이터들을 그룹짓거나(군집) 새로운 데이터 생성 등을 할 수 있는 모델을 만드는 학습 방법입니다.

이 중 Image Classification Model은 지도학습 방법을 이용합니다.
따라서, 학습시킬 데이터를 미리 준비하고 가공하는 과정이 반드시 필요한데,
이 과정이 생각보다 훨씬 많은 시간과 노력이 필요합니다.

■  데이터 수집
1.  분류하고자 하는 타겟 연예인 1차 선정
– 분류를 원하는 연예인 명단을 작성해 봅니다. 서비스 타겟 등에 따라 달라질 수 있음
– 사용층을 고려해서 연예인도 남녀노소 균형있게 고려할 필요가 있겠죠..
– NUGOO는 지금까지 국내 연예인 600~700명 정도의 데이터를 수집하면서 모델화 가능 여부 파악
– 수집된 데이터, 즉 사진의 수량과 질에 따라 최종 반영 여부 결정

2.  해당 연예인 사진 수집(프로그램)
– 간단한 웹 크롤링 프로그램 개발
– 연예인 이름으로 폴더를 만들어서 자동 수집 : 폴더 이름이 class label됨
– 사진을 수집하면서 사진에서 얼굴 영역만 1차 Crop하여 저장 : dlib, OpenCV 등 이용
– But, 아래 사진과 같이 얼굴영역을 잘못 인식하는 경우가 많고, 특정 연예인이 다른 사람들과 같이 찍은 사진이 많아 해당 연예인이 아닌 사진도 같이 Crop 되기도 합니다.

잘못된  Crop 예1

잘못된 Crop 예2

 

 

 

3-1. 사진 선별 작업(프로그램)
– 처음에는 위와 같은 사진을 일일이 수작업으로 제거 했는데, 그건 너무 힘든..쩝
– 그래서, OpenFace나 Open API의 이미지 비교 서비스를 이용하여 필터링 처리!!
(괜찮은 사진을 기준으로 유사도 점수가 낮으면 안쓰는걸로~)
https://cmusatyalab.github.io/openface/demo-2-comparison/
https://azure.microsoft.com/ko-kr/services/cognitive-services/face/
– 이 과정을 통해 제법 많은 공수를 줄일 수 있었음

3-2.  사진 선별 작업(수작업)
– 3-1 과정에서 선별된 연예인별 사진을 최종 점검
– 이 과정에서도 가끔 서로 다른 연예인 사진이 나오는 경우도 있음
– 학습에 도움되지 않는 사진 제거(얼굴 정면이 많이 나오지 않은 사진 등)

4. 사진 수 조정 및 최종 타겟 연예인 선정
– 연예인별 사진 수를 점검하여 가능한 200 ~ 300장 범위가 되도록 조정
– class별 학습 균형을 위해 range를 줄일 수록 좋음
– 사진 수가 부족할 경우 argumentation 처리(flip 등)로 사진수 늘리기
– 그래도 기본적인 사진수가 부족한 경우 최종 타겟에서 제외
– 특정 연예인의 사진 수가 너무 많아도 한쪽으로 학습 편향이 생기기 때문에 사진 선별이 필요함
– NUGOO는 현재 380명의 연예인/유명인 분류

5. 사진 얼굴 변형(Transform)
– 모델의 성능을 높이기 위해 최대한 정면의 바른 포즈가 되도록 변형 작업이 필요함
– 실제로는 개인의 다양한 포즈(정면, 측면, 얼짱각도 등) 사진을 학습하는게 좋으나,
데이터가 부족하기 때문에 한가지 기준(정면 평형)으로 학습하는 것이 성능에 좋음
– 따라서, 새로운 사진을 inference할때도 얼굴 변형 과정 선행!
– 가로, 세로 기준점에 맞춰 눈, 코, 입이 평형 위치가 될 수 있도록 사진 변형하고,
– 눈썹과 턱선을 기준으로 2차 Crop
–  dlib, OpenCV 등 이용

얼굴 변형(전)

얼굴 변형(후)

 

 

 

위와 같은 모든 과정을 거치면 이제 학습할 데이터 준비 완료!!

Face detection(crop) Algorithms
– Dlib : https://dlib.net/
– MTCNN : https://kpzhang93.github.io/MTCNN_face_detection_alignment

error: