일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 18405
- 18352
- 알고리즘
- 10825
- 협업 필터링
- 컨텐츠 기반 필터링
- 14620
- Pypy3
- 특정 거리의 도시 찾기
- 백준
- 추천 시스템
- 구조적 데이터
- 유튜브 추천 시스템
- hannanum
- 문자열반전
- 추천시스템
- 1620
- 유사도
- 추천 시스템의 한계
- python
- 7662
- 앤드류 응
- 경쟁적 전염
- 파이썬
- google dialogflow
- 7785
- 추천과 검색
- 3085
- 1259
- 넷플릭스 추천 시스템
- Today
- Total
목록분류 전체보기 (35)
Kowal's Igloo

들어가며요즘 백엔드 채용공고를 보면 아래와 같은 내용을 쉽게 확인할 수 있다. "대용량 데이터 처리"라... 도대체 왜 이렇게 중요한 걸까? 개념이 다소 모호하게 느껴질 수 있어, 대표적인 6가지 방법을 정리해보려 한다. 이번 글에서는 각 방법을 간략히 살펴보고, 관련 기술들을 정리할 예정이다. 더 깊이 알고 싶다면 직접 찾아보는 걸 추천한다.대규모 트래픽 & 데이터를 처리하는 방법1. 아키텍처 설계마이크로서비스 아키텍처 (MSA)단일 서비스(Monolith)보다 확장성(Scalability)과 유지보수성이 뛰어남각 서비스가 독립적으로 배포 및 확장 가능API Gateway와 로드 밸런서를 활용하여 트래픽을 분산이벤트 기반 아키텍처 (Event-Driven Architecture)Kafka, Rabbit..

주요 기업별 추천 시스템Youtube유튜브의 추천 시스템은 고려해야 할 3가지 주요 문제가 있다.Scale: 유튜브 비디오의 규모가 압도적으로 크기 때문에 일반적인 추천 알고리즘이 동작하기 어려운 수준이라는 것Freshness: 매 초마다 새로 업로드되는 많은 영상을 고려할 수 있어야 한다는 것Noise: 플랫폼에 있는 영상의 규모에 비해 유저의 반응이 부족한데, 그마저도 데이터로 관찰하기 어려운 요소에 의한 행동이나 필요 없는 행동이 포함된다는 것- 2016년과 2019년의 유튜브의 추천 모델 구조2016 (Candidate Generation 모델과 랭킹 모델)2019 (랭킹 모델만)2016년에는 전형적인 Multi-Stage 모델(후보 찾고 순위 매기기)을 사용했다.2019년에는 고도화된 추천을 위..

추천 시스템인터넷 상의 정보가 많아지고, 인터넷 관련 비즈니스가 활성화되면서 사용자가 인터넷 공간에서 원하는 정보를 찾고 적절한 결정을 내리기가 어려워졌다. 따라서 추천 시스템은 사용자가 정보를 수집하고 찾는 시간을 줄여주는 것을 목적으로 한다.추천 시스템의 구조추천 시스템의 전체적인 구조는 후보를 생성하는 단계와 후보들 간의 랭킹을 매기는 단계로 구분된다. 이를 여러 개의 단계로 구성되었다고 하여 Multi-Stage Recommender System이라고 한다.후보 생성 단계수백만 개에 달하는 아이템 중 사용자의 활동 기록을 바탕으로 실제로 추천할 만한 몇 백 개 정도의 후보군을 추출한다.Candidate Generation에서는 유저가 좋아할 만한 문서를 최대한 많이 골라내는 Recall(재현율)을..

Dialogflow ES 문서를 참고하여 정리한 글입니다.Google Cloud Dialogflow ES 문서 | Google Cloud Dialogflow ES 문서 | Google CloudDialogflow ES 가상 에이전트cloud.google.com AgentDialogflow 에이전트는 사용자와의 대화를 처리하는 가상 에이전트이다. 즉, 하나의 챗봇을 말한다고 할 수 있다. Dialogflow는 사용자의 예측 불가능하고 비구조화된 데이터(텍스트 또는 오디오)를 서비스가 이해할 수 있는 구조화된 데이터로 변환한다.Dialogflow 에이전트는 예상되는 대화 시나리오를 처리하도록 학습한다. Intent인텐트는 말 그대로 사용자의 의도를 말한다. 각 에이전트(챗봇)에 대해 여러 개의 인텐트..

하이퍼파라미터를 빨리 찾을 수 있게 하고, 신경망과 하이퍼파라미터의 상관관계를 줄여주어 더 넓은 범위의 하이퍼파라미터가 잘 동작하게 한다. 아주 깊은 신경망도 잘 작동하게 한다.배치 정규화의 개념입력 변수를 정규화하면 학습이 빨라진다.로지스틱 회귀 등으로 모델을 학습시킬 때 입력 변수들을 정규화하면 학습이 빨라졌다. 평균을 계산할 때는 입력 변수의 평균을 뺐고, 분산을 계산할 때는 하나씩 제곱해주었다.→ 이 방법은 누워있는 학습 등고선을 경사하강법에 적합한 둥근 형태로 바꿔준다.그렇다면 심층 신경망에서는 어떨까?심층 신경망에서는 입력 변수 x뿐 아니라 각 층의 활성값 a가 있다. 입력층을 정규화하는 것보다 w와 b에게 직접적인 영향을 미치는 직전 층의 a를 정규화하는 것이 더 효율적일 것이다. 그런데 은..

하이퍼파라미터 종류 (중요도순)학습률( α )모멘텀(Momentum) 알고리즘의 β은닉 유닛의 수미니배치 크기은닉층의 갯수학습률 감쇠(learning rate decay) 정도아담(Adam) 알고리즘의 β1, β2, ϵ튜닝 프로세스1. 무작위 접근 방식과거에는 왼쪽 방법을 사용했다. 이 방법은 데이터의 수가 적을 때 쓰기 좋다.현재 딥러닝에서는 오른쪽과 같이 무작위로 선택된 지점의 값을 쓴다. 어떤 값이 좋을지 미리 알 수 없기 때문이다.예를 들어 α와 ϵ을 튜닝한다고 했을 때, 왼쪽의 방법을 쓰면 5가지의 알파에 대해 훈련하게 되지만, 오른쪽 방법을 쓰면 25가지의 알파 값에 대해 훈련할 수 있다.어떤 하이퍼파라미터가 가장 핵심적이든 그 하이퍼파라미터의 여러 값에 대해 훈련할 수 있다.2. 정밀화 접근..

Normalization훈련 속도를 높일 수 있는 기법으로, 입력을 정규화하는 기법이다. Normalization에는 두 가지 방법이 있다.입력 데이터의 평균이 0이 되도록 모든 값마다 평균을 뺀다.분산을 1로 만들어 각 특성마다 같은 분산을 가지게 한다. 훈련 데이터를 확대할 때 사용한다면, 테스트 세트에도 같은 μ와 σ를 사용하여 똑같이 정규화해야 한다.Normalization이 필요한 이유(좌) Normalize O, (우) Normalize X입력 특성들의 분포가 다른데 정규화되지 않았다면, 가늘고 긴 모양의 비용함수를 얻는다. 경사 하강법 실행 시 매우 작은 학습률이 필요하다.입력 특성의 분포를 정규화하면 원 모양의 비용함수를 얻는다. 경사 하강법 실행 시 큰 학습률을 가져도 최솟값을 찾을 수 ..

정규화 (Regularization)모델 가공 - 훈련, 테스트에 모두 적용됨Overfitting에서 가장 처음에 시도해야 할 것은 정규화이다. 훈련 데이터를 늘리는 것도 방법이지만, 비용이 많이 소비된다.Logistic Regression 정규화L2 Regularization정규화는 weight 값에 패널티를 적용하는 방식으로 작동한다. L2 정규화는 w^2의 norm에 람다를 곱한 값을 전체 비용 함수에 더한다. w^2의 norm은 j = 1부터 nx까지 wj^2의 값을 더한 값으로, wTw와 같다. b 대신 w만 정규화하는 이유는, 매개변수 w의 수가 훨씬 많아 복잡한 벡터로 표현되기 때문이다.L1 Regularization (L2보다 훨씬 덜 일반적)L1 정규화는 |w|의 합을 람다에 곱한다. L..

하이퍼파라미터의 종류신경망의 층 수각각의 층의 은닉 유닛 수학습률활성화 함수딥러닝 모델의 개발 과정딥러닝을 적용하는 것은 아이디어 → 구현 → 테스트의 반복적인 과정사이클을 효율적으로 도는 것과 데이터 세트를 잘 설정하는 것이 중요전통적인 방법과정: 훈련 세트에 대해 계속 훈련 알고리즘을 적용시키면서 학습, 개발 세트에 대해 다양한 모델 중 어떤 모델이 가장 좋은 성능을 내는지 확인, 더 발전시키고 싶은 최종 모델이 나오면 테스트 세트에 그 모델을 적용시켜 성능 측정모든 데이터를 가져와서 위 세 개 세트로 나눔.머신러능에서는 60/20/20 비율. 10,000개 이하의 샘플에서 최적의 관행이었음.빅데이터 시대에 100만 개 이상의 샘플 데이터가 생기며 개발, 테스트 세트의 비율이 작아짐. (100만 개 ..

개요로지스틱 회귀에서는 z와 a를 한 번씩 계산했지만, 신경망에서는 여러 번 계산함.로지스틱 회귀신경망신경망 네트워크의 구성예) 은닉층이 하나인 신경망입력층은닉층출력층값 표기법a: 활성값. 신경망의 다음 층으로 전달해주는 값위첨자: 생성된 층의 위치아래첨자: 해당 층에서의 노드 번호층을 셀 때는 입력층은 세지 않는다. 예) 이 예시는 2 layer NN각 층에는 연관된 매개변수가 있다.예) 첫 번째 은닉층은 매개변수 w^[1]과 b^[1]에 관련됨w: (4, 3) 행렬 - 은닉 노드 4개, 입력 특성(n) 3개b: (4, 1) 벡터 - 은닉 노드 4개, 출력 노드 1개신경망 네트워크 출력의 계산신경망의 노드는 아래 계산을 수행한다.z를 계산한 후, z를 활성화함수에 통과해 a를 계산한다.매 층마다, 매 ..